簡體   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