我有一个txt
文件,其中包含一个errorID列表,以及一个包含所有ID的数据框。我想合并此列表。例如,假设我有一个看起来像这样的数据框(df1):
id value
a1 foo
a2 fo
a3 fi
a4 fum
a5 fe
和从txt中读取的错误数据帧(df2),并使用to_csv
,我得到了
error_id
a1
a4
a5
我想运行类似的东西
merged = df1.merge(df2, left_on='id', right_on='error_id')
为了获得最终结果:
id value
a2 fo
a3 fi
答案 0 :(得分:3)
有不需要合并。找到id
在df1
,是不是在df2
:
df1 = df1[~df1['id'].isin(df2['error_id'])]
波浪号(~
)取消了您要检查的条件。
答案 1 :(得分:0)
尝试:
df1.merge(df2, left_on='id', right_on='error_id', how='outer', indicator=True)\
.query('_merge == "left_only"')[['id','value']]
输出:
id value
1 a2 fo
2 a3 fi
答案 2 :(得分:0)
这也是另一种方式:
df.where(
df.merge(df1, left_on='id', right_on='error_id', how='left')
.error_id
.isnull())
.dropna()
id value
1 a2 fo
2 a3 fi