【问题标题】:Moving average with a difficult condition条件困难的移动平均线
【发布时间】:2019-06-12 14:37:17
【问题描述】:

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

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 - 第一个玩家失败)。每个游戏都是重复的(player_1 变为 player_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,
)

【问题讨论】:

    标签: python-3.x pandas dataframe filter


    【解决方案1】:
    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,
    )
    

    【讨论】:

      猜你喜欢
      • 2017-09-01
      • 2013-12-22
      • 2019-10-05
      • 1970-01-01
      • 2022-01-26
      • 2011-06-29
      • 2019-04-24
      • 2012-05-24
      • 2021-01-18
      相关资源
      最近更新 更多