Python3:比较两个CSV文件以确定新文件中的新增内容,忽略旧文件中的内容



我正在尝试将两个csv文件与panda进行比较,并确定更改。我的目标是识别新文件中存在但不在旧文件中的新条目,忽略旧文件中存在且在新文件中不再可用的所有条目。

  1. 一个旧文件
NAME;DESCRIPTION;LINK;PRICE;IMAGE
Item4;something;https://example.com;10;https://example.com/image.jpg
Item3;something;https://example.com;10;https://example.com/image.jpg
Item2;something;https://example.com;10;https://example.com/image.jpg
Item1;something;https://example.com;10;https://example.com/image.jpg
  1. 更新的文件
NAME;DESCRIPTION;LINK;PRICE;IMAGE
Item5;something;https://example.com;10;https://example.com/image.jpg
Item4;something;https://example.com;10;https://example.com/image.jpg
Item3;something;https://example.com;10;https://example.com/image.jpg
Item2;something;https://example.com;10;https://example.com/image.jpg

到目前为止,我已经确定了两个文件之间的任何更改,但不幸的是,它也显示出新文件中不再存在的内容

import pandas as pd
a = pd.read_csv('csv/new.items.csv')
b = pd.read_csv('csv/old.items.csv')
c = pd.concat([a,b], axis=0)
c.drop_duplicates(keep=False, inplace=True)
c.reset_index(drop=True, inplace=False)
c.to_csv(r'csv/pd.items.csv', index=False, header=True)

预期结果应该是一个新文件,只包括在旧文件中找不到的新条目

NAME;DESCRIPTION;LINK;PRICE;IMAGE
Item5;something;https://example.com;10;https://example.com/image.jpg

我已经多年没有使用python了,所以不要对我太苛刻:(

试试这个

c = b.merge(a, how = 'left', on = 'NAME', suffixes = ("", "_y"))
you should be able to get the new ones using the below command
c[c.DESCRIPTION_y.isnull()]

我通过执行以下最终解决了这个问题

import pandas as pd
a = pd.read_csv('csv/new.items.csv')
b = pd.read_csv('csv/old.items.csv')

d = b.merge(a, how='inner', on=None, suffixes=("", "_y"))
d.to_csv(r'csv/old.items.csv', index=False, header=True)
b = pd.read_csv('csv/old.items.csv')
c = pd.concat([a,b], axis=0)
c.drop_duplicates(keep=False, inplace=True) # Set keep to False if you don't want any
c.reset_index(drop=True, inplace=False)
c.to_csv(r'csv/pd.items.csv', index=False, header=True)

最新更新