首页 > 解决方案 > 比较 2 个 csv 文件,仅使用 pandas isin 函数和 out for 循环

问题描述

output = f2[~f2['column1'].isin(f1['column1'].unique())] + f2[~f2['column2'].isin(f1['column2'].unique())]

如何使用运算符进行此操作,我尝试了 && 和 ++ 也不起作用,我只想将每列的唯一值存储到输出变量,只有这样我才需要这样做,所以我很困惑使用运算符

f2[~f2['column1'].isin(f1['column1'].unique())]

在上面的命令中工作正常,但我想用操作员再次添加这个命令并将任何解决方案存储到一个变量中。??

标签: pythonpandas

解决方案


import pandas as pd
f1 = pd.read_csv('Big_1.csv',dtype=str)
f2 = pd.read_csv('Big_2.csv',dtype=str)
output= f2[~f2['column1'].isin(f1['column1'].unique()) | 
           ~f2['column2'].isin(f1['column2'].unique()) |
           ~f2['column3'].isin(f1['column3'].unique())]
print(output)
df=pd.DataFrame(output)
df.to_csv('Unique_values_only.csv',header=True,index=True)

我们可以使用

~f2['column2'].isin(f1['column2'].unique())

当我们给出一个时,这个方法要多次

'|'

符号,如果我们使用 + 或 ++ 或 & 和 && 等运算符,则不会从数据框中返回“值”,每个值都将为“南”,因此我们可以检查每一列并从 csv 文件中返回 uniq 内容,这我们可以在不合并的情况下比较 2 个 csv 文件。


推荐阅读