如何执行熊猫数据框的条件合并?

时间:2020-05-09 13:40:18

标签: python pandas dataframe

我有两个数据帧df1

group    value
g1       A
g1       B
g1       C
g1       D
g2       B
g2       C
g2       E
g3       A
g3       D
g3       E
g4       B
g4       D
...

df2

value1   value2
A        B
A        C
B        C
B        D
...

我想通过合并列df1df2value来合并value1value2,即:

group    value1    value2
g1       A         B
g1       A         C
g1       B         C
g2       B         C
g1       B         D
g4       B         D
...

如图所示,group仅在两个值同时对应于value1中的同一组的情况下,才显示两个列value2df1

df = df1.merge(df2, left_on='value', right_on='value1', how='inner')
df = df.merge(df2, left_on='value', right_on='value2', how='inner')
df = df.drop(['value'], axis=1)

问题是,我的实际数据帧df1df2很大,每次我尝试运行代码时,会话都崩溃了(更不用说,不确定我的代码是否正确首先)。

有什么主意如何优化此过程(并确认我的方法是否正确)?

1 个答案:

答案 0 :(得分:2)

第二次合并需要什么?还不够吗?

df = df1.merge(df2, how='inner', left_on=['value'], right_on=['value1']).drop(columns=['value'])
print(df)

  group value1 value2
0    g1      A      B
1    g1      A      C
2    g3      A      B
3    g3      A      C
4    g1      B      C
5    g1      B      D
6    g2      B      C
7    g2      B      D
8    g4      B      C
9    g4      B      D