熊猫与NaN值合并

时间:2018-07-24 15:16:56

标签: python pandas

我要执行以下操作:在df1['B']=df2['B'] & df1['C']=df2['C']df1['B']=df2['B'] & df2['C'] IS NULLdf2['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 |

1 个答案:

答案 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