gpt4 book ai didi

python - 将具有 df 的两列值的两个数据框与另一个数据框的单列值连接起来。基于某些条件?

转载 作者:太空宇宙 更新时间:2023-11-04 04:19:27 24 4
gpt4 key购买 nike

我有一个这样的数据框:

df1
col1 col2 col3 col4
1 2 A S
3 4 A P
5 6 B R
7 8 B B

我有另一个数据框:

df2
col5 col6 col3
9 10 A
11 12 R

如果 df1 的 col3 和 col4 的任何值与 df2 的 col3 值匹配,我想加入这两个数据框,它将加入。

最终数据框如下所示:

df3
col1 col2 col3 col5 col6
1 2 A 9 10
3 4 A 9 10
5 6 R 11 12

如果 col3 值出现在 df2 中,那么它将通过 col3 值加入,否则如果它出现在 df2 的 col3 值中,它将通过 col4 值加入

如何使用 pandas/python 以最有效的方式做到这一点?

最佳答案

使用双 merge使用默认内部连接,第二次过滤掉 df3 中匹配的行,最后一个 concat一起:

df3 = df1.drop('col4', axis=1).merge(df2, on='col3')
df4 = (df1.drop('col3', axis=1).rename(columns={'col4':'col3'})
.merge(df2[~df2['col3'].isin(df1['col3'])], on='col3'))


df = pd.concat([df3, df4],ignore_index=True)
print (df)
col1 col2 col3 col5 col6
0 1 2 A 9 10
1 3 4 A 9 10
2 5 6 R 11 12

编辑:使用左连接和最后一个 combine_first :

df3 = df1.drop('col4', axis=1).merge(df2, on='col3', how='left')
df4 = (df1.drop('col3', axis=1).rename(columns={'col4':'col3'})
.merge(df2, on='col3', how='left'))

df = df3.combine_first(df4)
print (df)
col1 col2 col3 col5 col6
0 1 2 A 9.0 10.0
1 3 4 A 9.0 10.0
2 5 6 B 11.0 12.0
3 7 8 B NaN NaN

关于python - 将具有 df 的两列值的两个数据框与另一个数据框的单列值连接起来。基于某些条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54779860/

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