繁体   English   中英

如何通过熊猫中的两个键将数据帧与自身合并?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM