Сравнение файлов Excel с использованием первичного ключа и отображение различий в новом кадре данных - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть два листа Excel, которые имеют разное количество столбцов и строк. Они имеют уникальный ключ = 'ID'. Я пытаюсь сравнить каждый из столбцов в файлах Excel и везде, где есть несоответствие; Я пытаюсь отобразить разницу в этом столбце

Dataset1:

ID  Amt Orders  Name
AB_1    33.4    10  TBC
CD_2    56.5    20  TBC1

Dataset2:
ID  Amt Orders  Name
AB_1    50  11  TBC
CD_2    60  211 TBC1


Results:
ID  Amt_1   Amt_2   Diff
AB_1    50  33.4    16.6
CD_2    60  56.5    3.5

Я попробовал следующие решения: я чувствую, что они не подходят мне: https://pbpython.com/excel-diff-pandas-update.html

Как мне этого добиться?

1 Ответ

0 голосов
/ 04 февраля 2020

Вы можете найти разницу сами, если это всегда один и тот же формат. Немного странно называть amt_1 значением amt из набора данных2, но я сохранил его, как вы описали.

import pandas as pd
import numpy as np
import os

pathFolder_to_file = '*yourpath*'  

# define the types of the columns
df_dtypes = {'ID': str,'Amt': np.float,'Orders': np.float,'Name': str}

df1 = pd.read_excel(io = pathFolder_to_file + '/dataset1.xlsx', dtype = df_dtypes, index_col="ID")
df2 = pd.read_excel(io = pathFolder_to_file + '/dataset2.xlsx', dtype = df_dtypes, index_col="ID")

# inner join assumes that df1 and df2 have the same ID in them
df = df1.join(df2, rsuffix='_1', lsuffix = '_2')
df["Diff"] = df["Amt_1"] - df["Amt_2"]

# filter out all records where there is no difference and print
diff_df = df[df["Diff"] != 0]
print(diff_df[["Amt_1", "Amt_2", "Diff"]])
...