我希望有人能提供建议...
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,
)
答案 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,
)