Pandas—删除一行中重复的列值对,并将唯一的行值移动到新列



我有一个足球比赛的数据框,如下所示:

team_id  adversary_id round_id xG
262      263          1        0.45
263      262          1        0.34
245      254          1        0.67
254      245          1        0.15
...

如何摆脱重复的fixture并将数据帧更改为更宽的格式:

team_id  adversary_id  round_id  xG_team  xG_adversary
262      263           1         0.45     0.34
245      254           1         0.67     0.15
...

先用numpy,sort再用merge

df[['team_id','adversary_id']] = np.sort(df[['team_id','adversary_id']].values,axis=1)
out = df.iloc[0::2].merge(df.iloc[1::2],on = ['team_id','adversary_id','round_id'], suffixes = ('_team','_adversary'))
Out[403]: 
team_id  adversary_id  round_id  xG_team  xG_adversary
0      262           263         1     0.45          0.34
1      245           254         1     0.67          0.15

最新更新