如何比较具有相同列但值不同的两个csv文件?

时间:2019-10-04 08:53:17

标签: python csv compare multiple-columns procmon

这是我的问题,我需要比较两次转换为CSV文件的procmon扫描。

两个文件的列名都相同,但是显然内容不同。 我需要检查从第一个文件到第二个文件的“路径”(第5列),然后将第二个文件的整个行打印到第三个CSV文件(如果存在匹配项)。

我已经搜索了一段时间,似乎无法像我想要的那样使它正常工作,感谢您的帮助!

我已经尝试了许多在线工具和其他python脚本,但都无济于事。

2 个答案:

答案 0 :(得分:2)

只需为您自己的代码编写此类代码。可能比您预期的要容易。

#!/usr/bin/env python

import pandas as pd

# read the csv files
csv1 = pd.read_csv('<first_filename>')
csv2 = pd.read_csv('<sencond_filename>')

# create a comapare series of the files
iseq = csv1['Path'] == csv2['Path']

# push compared data with 'True' from csv2 to csv3
csv3 = pd.DataFrame(csv2[iseq])

# write to a new csv file
csv3.to_csv('<new_filename>')

答案 1 :(得分:0)

您是否尝试过同时使用pandas和numpy?

它看起来像这样:

import pandas as pd
import numpy as np

#get your second file as a Dataframe, since you need the whole rows later
file2 = pd.read_csv("file2.csv")

#get your columns to compare
file1Column5 = pd.read_csv("file1.csv")["name of column 5"]
file2Column5 = file2["name of column 5"]

#add a column where if values match, row marked True, else False
file2["ColumnsMatch"] = np.where(file1Column5 == file2Column5, 'True', 'False')

#filter rows based on that column and remove the extra column
file2 = file2[file2['ColumnsMatch'] == 'True'].drop('ColumnsMatch', 1)

#write to new file
file2.to_csv(r'file3.csv')