Как вы сравниваете два CSV-файла с одинаковыми столбцами, но разными значениями? - PullRequest
0 голосов
/ 04 октября 2019

Вот моя проблема, мне нужно сравнить два скана procmon, которые я конвертировал в файлы CSV.

Оба файла имеют одинаковые имена столбцов, но, очевидно, их содержимое отличается. Мне нужно проверить «Путь» (5-й столбец) от первого файла до одного во второй файл и распечатать ВСЮ строку второго файла в третий CSV, если есть соответствующие совпадения.

Я довольно долго гуглял и, похоже, не могу заставить это работать так, как я хочу, любая помощь приветствуется!

Я пробовал множество онлайн-инструментов и других скриптов на Python, но безрезультатно.

Ответы [ 2 ]

2 голосов
/ 04 октября 2019

Просто напишите для таких вещей свой код. Это, вероятно, проще, чем вы ожидаете.

#!/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>')

0 голосов
/ 04 октября 2019

Вы пробовали использовать панд и 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')
...