gpt4 book ai didi

python - 基于多个条件加入两个 Pandas 数据框

转载 作者:行者123 更新时间:2023-12-01 00:15:03 26 4
gpt4 key购买 nike

df_adf_b是两个数据框,如下所示

df_a
A B C D E
x1 Apple 0.3 0.9 0.6
x1 Orange 0.1 0.5 0.2
x2 Apple 0.2 0.2 0.1
x2 Orange 0.3 0.4 0.9
x2 Mango 0.1 0.2 0.3
x3 Orange 0.3 0.1 0.2


df_b
A B_new F
x1 Apple 0.3
x1 Mango 0.2
x1 Orange 0.1
x2 Apple 0.2
x2 Orange 0.3
x2 Mango 0.1
x3 Orange 0.3
x3 Mango 0.2
x3 Apple 0.1

我要我的 final_df包含 df_a 中包含的所有行使得它考虑到 df_a['A'] == df_b['A'] 的独特组合和 df_a['B'] == df_b['B_new'] .

我试过做外连接,然后在 final_df 中删除重复的 w.r.t 列 A 和 B但不保留 B_new 的值。

以下是我想要的 result_df看起来像:

结果_df
 A   B       C      D     E   B_new  F
x1 Apple 0.3 0.9 0.6 Apple 0.3
x1 Orange 0.1 0.5 0.2 Orange 0.1
x2 Apple 0.2 0.2 0.1 Apple 0.2
x2 Orange 0.3 0.4 0.9 Orange 0.3
x2 Mango 0.1 0.2 0.3 Mango 0.1
x3 Orange 0.3 0.1 0.2 Orange 0.3

我也试过左外连接:
final_df = pd.merge(df_a, df_b, how="left", on=['A'])

此数据框的大小是 df_a 的并集和 df_b这不是我想要的。

感谢任何建议。

最佳答案

您需要内部合并,在每种情况下指定两个合并列:

res = df_a.merge(df_b, how='inner', left_on=['A', 'B'], right_on=['A', 'B_new'])

print(res)

A B C D E B_new F
0 x1 Apple 0.3 0.9 0.6 Apple 0.3
1 x1 Orange 0.1 0.5 0.2 Orange 0.1
2 x2 Apple 0.2 0.2 0.1 Apple 0.2
3 x2 Orange 0.3 0.4 0.9 Orange 0.3
4 x2 Mango 0.1 0.2 0.3 Mango 0.1
5 x3 Orange 0.3 0.1 0.2 Orange 0.3

关于python - 基于多个条件加入两个 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53549492/

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