【发布时间】:2021-07-25 04:26:39
【问题描述】:
我有两个数据框 df1 和 df2,我需要检查 df1 列 x1 和列 x2 中的值是否存在于 df2 列 x 中。如果该值不存在,则将其添加到 df2 列 x 和 NaN 到 df2 列 y。
以下是我所拥有的,它可以工作,但对于大型数据集来说需要很长时间,我觉得可以使用 Pandas 方法对其进行改进和简化。
df1 = pd.DataFrame({'x1':['a', 'b', 'e'], 'x2':['c', 'd', 'b']})
df2 = pd.DataFrame({'x':['d', 'e', 'f'], 'y':['a1', 'b2', 'c3']})
diff = set([*df1[~df1['x1'].isin(df2['x'])]['x1'], *df1[~df1['x2'].isin(df2['x'])]['x2']])
for x in diff:
df2 = df2.append({"x":x}, ignore_index=True)
df1:
x1 x2
0 a c
1 b d
2 e b
df2:
x y
0 d a1
1 e b2
2 f c3
结果应该是:
x y
0 d a1
1 e b2
2 f c3
3 c NaN
4 b NaN
5 a NaN
【问题讨论】: