比较 df,包括数据中的详细见解



我有一个python项目:

df_testR,列={名称、城市、许可证、金额}

df_testF,列={名称、城市、许可证、金额}

我想比较一下这两个df。结果应该是df,我在这里看到了名称、城市和许可证以及金额。通常,df_testR和df_testF应该完全相同。如果不一样,我想看看Amount_R和Amount_F的区别。

我提到:熊猫中两个数据帧之间的差异

但我收到了一张只有TRUE和FALSE的表格:

许可证
名称 城市金额
import copy
import pandas as pd
data1 = {'Name': ['A', 'B', 'C'], 'City': ['SF', 'LA', 'NY'], 'Licence': ['YES', 'NO', 'NO'], 'Amount': [100, 200, 300]}
data2 = copy.deepcopy(data1)
data2.update({'Amount': [500, 200, 300]})
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
df2.drop(1, inplace=True)

首先找到缺失的行并打印:

matching = df1.isin(df2)
meta_data_columns = ['Name', 'City', 'Licence']
metadata_match = matching[meta_data_columns]
metadata_match['check'] = metadata_match.apply(all, 1, raw=True)
missing_rows = list(metadata_match.index[~metadata_match['check']])
if missing_rows:
print('Some rows are missing from df2:')
print(df1.iloc[missing_rows, :])

然后删除这些行并合并:

df3 = pd.merge(df2, df1.drop(missing_rows), on=meta_data_columns)

现在删除具有相同数量的行:

df_different_amounts = df3.loc[df3['Amount_x'] != df3['Amount_y'], :]

我假设DF已经排序。如果您处理的是非常大的DFs,那么最好先过滤DFs,使合并更快。

相关内容

  • 没有找到相关文章

最新更新