pandas df从df1中删除也在df2中的项目

时间:2017-09-25 18:25:27

标签: pandas

我有两个非常大的csv文件。它们都只是一个整数的col。如果它们在dfB中,我需要检查dfA中的每个整数。如果是这样,我需要从dfA中删除项目。

如果在dfB中,我可能会遍历dfA并检查每个值,但循环过于缓慢。

dfA:

        0
0  9312969810
1  3045897298
2  8162414592
3  2030000000
4  7876904982

DFB:

        0
0  2030000000
1  2030156119
2  2030389149
3  2030641047
4  2030693850

输出:

        0
0  2030156119
1  2030389149
2  2030641047
3  2030693850

由于2030000000在dfB中,我们需要从dfA中删除。

有没有人有更好的方法。 感谢

编辑:dfB的csv为2gb,dfA为5mb

1 个答案:

答案 0 :(得分:0)

没有'魔法子弹'在这里,你必须至少循环一次每个列表

你可以按如下方式迭代其中一个列表(不过,我想在幕后,我们遍历两个列表)

dfA = pd.read_csv(file1)
dfB = pd.read_csv(file2)

for n in dfB.values:
    dfA = dfA[dfA[0] != n]

替代方案,Zero说的是,但我认为仍然(在引擎盖下)做(更有效)循环

dfA[~dfA[0].isin(dfB[0])]