Скользящая средняя со сложным состоянием - PullRequest
0 голосов
/ 10 июня 2019

Надеюсь, кто-нибудь поможет советом ...

В df есть таблица:

   Axis  Player_1 Player_2      RES     Aver_RES1   Aver_RES2
        1       1       2       0               
        2       2       1       1               
        3       1       3       1               
        4       3       1       0               
        5       2       4       1               
        6       4       2       0               
        7       2       8       1               
        8       8       2       0               
        9       1       8       0               
        10      8       1       0               
        11      3       5       1               
        12      5       3       0               
        13      1       8       1               
        14      8       1       0               
        15      1       4       1               
        16      4       1       0               
        17      2       1       1               
        18      1       2       0       0.6667      1

В столбце Player_1, Player_2 закодированы игроки.В RES - результат игры (1 - первый игрок выигрывает, 0 - первый игрок проигрывает).Каждая игра дублируется (игрок_1 становится игроком_2).И мне нужно посчитать, как Player_1 играл к этому моменту, с теми, с кем играл Player_2.А также для Player_2.Например, рассмотрим 18 строчку.Player_1 (1) играл с 3, 4, 8 игроками.Player_2 (2) играл с 4, 8 игроками.Их общие противники - 4, 8 игроков.

Как это может быть (но с заменой ?????):

df['Aver_RES1'] = df.apply(
    lambda x: df.loc[
        (

            & (df.Player_1 == x.Player_1)
            & (df.Player_2 == ??????)
        ),
        "RES",
    ].mean(),
    axis=1,
)

df['Aver_RES2'] = df.apply(
    lambda x: df.loc[
        (

            & (df.Player_1 == x.Player_2)
            & (df.Player_2 == ??????)
        ),
        "RES",
    ].mean(),
    axis=1,
)

1 Ответ

0 голосов
/ 12 июня 2019
df['Aver_RES1'] = df.apply(
    lambda x: df.loc[
        (

            & (df.Player_1 == x.Player_1)
            & (df.loc[(df.Player_1 == x.Player_1)].Player_2.isin(df.loc[(df.Player_1 == x.Player_2)].Player_2.unique()))
        ),
        ),
        "RES",
    ].mean(),
    axis=1,
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...