处于困难状况的移动平均线

时间:2019-06-10 17:03:50

标签: python-3.x pandas dataframe filter

我希望有人能提供建议...

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行。 玩家_1(1)与3,4,8玩家一起玩。玩家_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 :(得分:0)

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,
)