我有一个问题,该问题是由格式化数据的方式导致的,该数据并非进行“对抗分析”的最佳方式。例如,我们每场比赛每个名字都有一条记录,我们还有他们所打过的球员的数据(每场比赛总是2条记录;思考中心与中心或篮球中pg与pg等)。
当前数据:
uid name field1 field2 field3
1 bob 35 0 49
1 evan 4 24 29
2 bob 39 47 26
2 mike 6 40 49
3 bob 48 7 7
3 evan 18 20 11
4 bob 3 49 41
4 evan 25 35 23
所需的输出:
uid name versus field1 field2 field3
1 bob evan same as above
1 evan bob
2 bob mike
2 mike bob
3 bob evan
3 evan bob
4 bob evan
4 evan bob
这次重新安排/添加的目标是,现在我可以对多个游戏的一个玩家与另一个玩家进行分组分析,以找出他们在该对战中的平均表现。
答案 0 :(得分:2)
由于每个游戏只有2个条目,因此您可以尝试对名称进行分组和反转。
df['versus'] = df.groupby('uid')['name'].transform(lambda x: x[::-1])
答案 1 :(得分:1)
如果仅需要其他玩家的名字,则应寻求Rohith的解决方案。您还可以使用merge
和query
来获取其他玩家的统计信息:
(df.merge(df, on='uid')
.query('name_x != name_y')
)
输出
uid name_x field1_x field2_x field3_x name_y field1_y field2_y field3_y
-- ----- -------- ---------- ---------- ---------- -------- ---------- ---------- ----------
1 1 bob 35 0 49 evan 4 24 29
2 1 evan 4 24 29 bob 35 0 49
5 2 bob 39 47 26 mike 6 40 49
6 2 mike 6 40 49 bob 39 47 26
9 3 bob 48 7 7 evan 18 20 11
10 3 evan 18 20 11 bob 48 7 7
13 4 bob 3 49 41 evan 25 35 23
14 4 evan 25 35 23 bob 3 49 41