Я пытаюсь сравнить два CSV-файла (не отсортированные) и хотел бы получить отчет, подобный сравнению SAS Proc. Я использую datacompy и сортирую фрейм данных перед сравнением, но отчеты datacompy показывают, что «нет общих строк».
Пожалуйста, дайте мне знать, что мне не хватает в приведенном ниже фрагменте.
Я пробовал сортировку, переиндексацию, а также вместо использования join_columns я пробовал также on_index = True.
from io import StringIO
import pandas as pd
import datacompy
data1 = """name,age,loc
ABC,123,LON
EFG,456,MAA
"""
data2 = """name,age,loc
EFG,457,MAA
ABC,124,LON
"""
df1 = pd.read_csv(StringIO(data1))
df2 = pd.read_csv(StringIO(data2))
df1.sort_values(by=['name','age','loc']).reindex
df2.sort_values(by=['name','age','loc']).reindex
compare = datacompy.Compare(
df1,
df2,
join_columns=['name','age','loc'], #You can also specify a list of columns
abs_tol=0.0001,
rel_tol=0,
df1_name='original',
df2_name='new')
compare.matches()
print(compare.report())
Ожидаемый результат
data1
имя, возраст, LOC
ABC, 123, LPN
EFG, 456, MAA
data2
имя, возраст, LOC
ABC, 123, LPN
EFG, 457, MAA
И отчет должен быть таким же, как для столбца возраста, максимальное различие равно 1, а все остальные в порядке.