[英]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.