首页 > 解决方案 > Python比较两个不同的CSV文件,其值不在同一行中

问题描述

我有 2 个 CSV 文件,看起来像这样:

first.csv(主文件)

Test1  10
Test2  20

第二个csv

Test8  80
Test1  10

在这种情况下,我想创建一个函数,它说如果 second.csv 中的值(Test8)在 first.csv 中不存在,则打印 False。

我的代码:

def checkContent():
    masterFile= pd.read_csv('./first.csv', error_bad_lines=False)
    df1=pd.DataFrame(masterFile, columns=[1])
    customerFile=pd.read_csv('.second.csv', error_bad_lines=False)
    df2=pd.DataFrame(customerFile, columns=[0])

    df1[1] = df2[0]
    check=np.where(df1[1]==df2[0], True, False)
    print(check) 

但它只是比较第一行。不是其他行。我知道它必须由row += 1或类似的东西来完成

标签: pythonpandas

解决方案


IIUC你需要一个左连接indicator = True

check = np.where(pd.merge(df2,df1,on=['A','B'],how='left'
         ,indicator=True)['_merge'] == 'left_only',
         False,
         True)

print(check)
array([False,  True])

print(pd.merge(df2,df1,on=['A','B'],how='left',indicator=True))

       A   B     _merge
0  Test8  80  left_only
1  Test1  10       both

推荐阅读