[英]How to merge a dataframe with itself by two keys in pandas?
我有这个示例数据集:
HOME_TEAM AWAY_TEAM TIMES
0 Argentina Uruguay 3
1 Uruguay Argentina 5
我想获得这支球队在其中面临的次数。
Matches TIMES
3 Argentina-Uruguay 8
我一直在尝试以下代码:
af = af.merge(
af,
left_on=["home_team", "away_team"],
right_on=["away_team", "home_team"],
how='left'
)
输出是:
home_team_x away_team_y values_x home_team_y away_team_y values_y
0 Argentina Uruguay 96 Uruguay Argentina 80.0
1 Uruguay Argentina 80 Argentina Uruguay 96.0
有没有办法以pythonic的方式做到这一点并避免重复?
使用pandas.Series.groupby.sum
一种方法:
new_df = df["TIMES"].groupby(df.filter(like="TEAM").apply(frozenset, 1)).sum()
new_df.index = ["-".join([t1, t2]) for t1, t2 in new_df.index]
print(new_df.rename_axis("Matches").reset_index())
输出:
Matches TIMES
0 Argentina-Uruguay 8
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.