繁体   English   中英

如果一个列与一组其他列匹配,则将两个 DataFrame 与 Pandas 连接起来

[英]Joining two DataFrames in with Pandas if one column matches a set of other columns

我正在尝试加入/合并两个 Pandas 数据帧,但是如果一列与第二帧上的一组列中的任何一个匹配,我想加入行。 有两列的示例(我的真实集合中有八列)。

我的数据不可能有多个匹配项。

df1 =

    person  fav second_fav
0   adam    xxx cherry
1   bob banana  yyy

df2 =

    fruit   fruit_val
0   apple   10
1   banana  20
2   cherry  30

所需的 output:

    person  fav     second_fav    fruit_val
0   adam    xxx     cherry        30
1   bob     banana  yyy           20

使用每个标准将两个数据框合并两次可以帮助实现这一目标

import pandas as pd
df1 = pd.DataFrame(data = {'person':['adam','bob'],
                           'fav':['xxx','banana'],
                           "second_fav":['cherry','yyy'],})

df2 = pd.DataFrame(data = {'fruit':['apple','banana','cherry'],
                           'fruit_val':[10,20,30],})

使用第一个条件的第一个内部连接

result1 = pd.merge(df1, df2, left_on=['fav'], right_on=['fruit'], how='inner', sort=True)

第二次加入

result2 = pd.merge(df1, df2, left_on=['second_fav'], right_on=['fruit'], how='inner', sort=True)

Append 两个数据帧

result_final = result1.append(result2)

result_final
Out[14]: 
  person     fav second_fav   fruit  fruit_val
0    bob  banana        yyy  banana         20
0   adam     xxx     cherry  cherry         30

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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