我有两个非常大的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
答案 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])]