使用 Python 查找两个 CSV 文件中的差异
Looking for differences in two CSV files with Python
我有一个脚本可以抓取网站并将特定网站名称放入 csv。有些日子它有 0 个站点名称,有些日子它有更多的 4。我有另一个脚本,它获取今天的 csv 和昨天的 csv 并比较两者。如果今天的 csv 中的网站名称也在昨天的 csv 中,我想将这些网站名称输出到不同的 txt 文件中。我有:
with open(filepath + today + filename, 'r') as t1, open(filepath + yesterday + filename, 'r') as t2:
fileone = t1.readlines()
filetwo = t2.readlines()
with open(checklistFile, 'w') as outfile:
for line in fileone:
if line in file:
outfile.write(line)
print("bad")
else:
outfile.write("good")
print("good")
这仅在 csvs 具有相同行数且顺序相同时才有效。例如,如果今天有“site1、site2、site3”而昨天有“site4、site1、site5”,那么这个脚本就会错过它。任何帮助,将不胜感激。我是 运行 Python 2.7,所以我不能使用 csv-diff。
您可以使用 pandas
实现此目的:
import pandas as pd
df_today = pd.read_csv(filepath + today + filename)
df_yesterday = pd.read_csv(filepath + yesterday + filename)
df_common = pd.concat([df_today,df_yesterday])
duplicates_df = df_common[df_common.duplicated()]
duplicates_df.to_csv(checklistFile, index=False)
我有一个脚本可以抓取网站并将特定网站名称放入 csv。有些日子它有 0 个站点名称,有些日子它有更多的 4。我有另一个脚本,它获取今天的 csv 和昨天的 csv 并比较两者。如果今天的 csv 中的网站名称也在昨天的 csv 中,我想将这些网站名称输出到不同的 txt 文件中。我有:
with open(filepath + today + filename, 'r') as t1, open(filepath + yesterday + filename, 'r') as t2:
fileone = t1.readlines()
filetwo = t2.readlines()
with open(checklistFile, 'w') as outfile:
for line in fileone:
if line in file:
outfile.write(line)
print("bad")
else:
outfile.write("good")
print("good")
这仅在 csvs 具有相同行数且顺序相同时才有效。例如,如果今天有“site1、site2、site3”而昨天有“site4、site1、site5”,那么这个脚本就会错过它。任何帮助,将不胜感激。我是 运行 Python 2.7,所以我不能使用 csv-diff。
您可以使用 pandas
实现此目的:
import pandas as pd
df_today = pd.read_csv(filepath + today + filename)
df_yesterday = pd.read_csv(filepath + yesterday + filename)
df_common = pd.concat([df_today,df_yesterday])
duplicates_df = df_common[df_common.duplicated()]
duplicates_df.to_csv(checklistFile, index=False)