我要执行以下操作:在df1['B']=df2['B'] & df1['C']=df2['C']
或df1['B']=df2['B'] & df2['C'] IS NULL
或df2['B'] IS NULL & df1['C']=df2['C']
上df1左联接df2
这是示例输入和输出:
df1:
| A | B | C |
|---|---|---|
| 1 | 2 | 3 |
| 5 | 6 | 7 |
df2:
| B | C | D |
|-----|-----|---|
| 2 | 3 | 4 |
| NaN | 7 | 8 |
| 6 | NaN | 9 |
输出:
| A | B | C | D |
|---|---|---|---|
| 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 |
| 5 | 6 | 7 | 9 |
答案 0 :(得分:0)
我认为我们可以分多个步骤进行操作,在熊猫合并或联接中没有可以做到这一点的功能。但是,这种方法应该可以。
df_b = df1.merge(df2, on='B', how='left', suffixes=('','_y'))[['A','B','C','D']]
df_c = df1.merge(df2, on='C', how='left', suffixes=('','_y'))[['A','B','C','D']]
pd.concat([df_b,df_c]).drop_duplicates().reset_index(drop=True)
输出:
A B C D
0 1 2 3 4
1 5 6 7 9
2 5 6 7 8