Я хочу сравнить два кадра данных и распечатать мои различия выборочно. Вот что я хочу сделать в картинках:
Dataframe 1
Dataframe 2
Желаемый результат - Dataframe 3
Что я пробовал до сих пор?
import pandas as pd
import numpy as np
df1 = pd.read_excel("01.xlsx")
df2 = pd.read_excel("02.xlsx")
def diff_pd(df1, df2):
"""Identify differences between two pandas DataFrames"""
assert (df1.columns == df2.columns).all(), \
"DataFrame column names are different"
if any(df1.dtypes != df2.dtypes):
"Data Types are different, trying to convert"
df2 = df2.astype(df1.dtypes)
if df1.equals(df2):
return None
else: # need to account for np.nan != np.nan returning True
diff_mask = (df1 != df2) & ~(df1.isnull() & df2.isnull())
ne_stacked = diff_mask.stack()
changed = ne_stacked[ne_stacked]
changed.index.names = ['id', 'Naziv usluge']
difference_locations = np.where(diff_mask)
changed_from = df1.values[difference_locations]
changed_to = df2.values[difference_locations]
return pd.DataFrame({'Service Previous': changed_from, 'Service Current': changed_to},
index=changed.index)
df3 = diff_pd(df1, df2)
df3 = df3.fillna(0)
df3 = df3.reset_index()
print(df3)
Чтобы быть честным, я нашел этот код в другом потоке, но это не таквыполни работу, но у меня все еще есть некоторые проблемы.
- Мои кадры данных не равны, что мне делать?
- Я не до конца понимаю код, который я предоставил.
Спасибо!