gpt4 book ai didi

python - 外连接 Pandas 数据框

转载 作者:行者123 更新时间:2023-12-01 02:20:37 25 4
gpt4 key购买 nike

我正在尝试外部连接(在 df1 上)两个 pandas 数据帧。以下是示例数据框:

df1:
Index Team 1 Team 2 Team1_Score Team2_Score
0 A B 25 56
1 B C 30 55
2 D E 35 75

df2:
Index Team 1 Team 2 Team1_Avg Team2_Avg
0 A B 5 15
1 G F 10 25
2 C B 15 35

dfcombined
Index Team 1 Team 2 Team1_Score Team2_Score Team2_Avg Team1_Avg
0 A B 25 56 5 15
1 B C 30 55 35 15
2 D E 35 75

我试图使用 pandasql 模块,但是我不确定如何处理在 df1 中加入索引 1 和在 df2 中加入索引 2 的情况,因为团队的顺序是相反的。通过 pandasql 模块,我不知道如果团队顺序相反,如何切换组合数据框中的团队平均值。

如果有任何帮助,我将不胜感激。

最佳答案

设置-

df1

Team 1 Team 2 Team1_Score Team2_Score
Index
0 A B 25 56
1 B C 30 55
2 D E 35 75

df2

Team 1 Team 2 Team1_Avg Team2_Avg
Index
0 A B 5 15
1 F G 25 10
2 B C 35 15

首先,我们需要对 Team * 列进行排序,并相应地以相同的方式对 Team*_Score 列进行排序。我们将使用 argsort 来执行此操作。

i = np.arange(len(df1))[:, None]
j = np.argsort(df1[['Team 1', 'Team 2']], axis=1).values

df1[['Team 1', 'Team 2']] = df1[['Team 1', 'Team 2']].values[i, j]
df1[['Team1_Score', 'Team2_Score']] = df1[['Team1_Score', 'Team2_Score']].values[i, j]

现在,使用 Team *Team*_Avgdf2 重复相同的过程。

j = np.argsort(df2[['Team 1', 'Team 2']], axis=1).values

df2[['Team 1', 'Team 2']] = df2[['Team 1', 'Team 2']].values[i, j]
df2[['Team1_Avg', 'Team2_Avg']] = df2[['Team1_Avg', 'Team2_Avg']].values[i, j]

现在,执行左外合并 -

df1.merge(df2, on=['Team 1', 'Team 2'], how='left')

Team 1 Team 2 Team1_Score Team2_Score Team1_Avg Team2_Avg
0 A B 25 56 5 15
1 B C 30 55 35 15
2 D E 35 75

关于python - 外连接 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47981067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com