Pandast数据帧表Di

2024-10-03 02:43:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以用这个逻辑来分析两个完全相同的数据帧之间的差异:

targetDF = pd.concat([sourceDataFrame, tardisDataFrame])
targetDF = targetDF.reset_index(drop=True)
columnsGroup = list(targetDF.columns)
targetDF_GroupBy = targetDF.groupby(columnsGroup)
idx = [x[0] for x in targetDF_GroupBy.groups.values() if len(x) == 1]
targetDF = targetDF.reindex(idx)

我得到了预期的结果。你知道吗

我的问题是,这两张桌子到底有什么不同。一个简单的方法是将其导出到excel并在那里编写diff宏。你知道吗

在我的代码中有更好的方法吗?你知道吗

其他评论: 我的示例差异数据可能如下所示:

Contract  Age  Sex  State  Savings  Checking  Total
A123  23  M  NJ  1000.02  3000.00  4000.02
A123  34  M  NJ  1000.03  3000.00  4000.03
B534  44  F  OH  3000.00  5000.00  8000.00
B534  44  F  OH  3000.00  5000.00  8000.00
C345  33  F  NY  1234.02  5000.00  6234.02
C345 33 F NY 1234.05 5000.00 6234.05
D653 66 M PA 2334.90 4500.06 6834.96
D653 56 M PA 2334.90 4500.07 6834.97

或者

import pandas as pd
cols = ['Contract', 'Age', 'Sex', 'State', 'Savings', 'Checking', 'Total']
data = [['A123', '23', 'M', 'NJ', '1000.02', '3000', '4000.02'],
['A123', '34', 'M', 'NJ', '1000.03', '3000', '4000.03'],
['B534', '44', 'F', 'OH', '3000', '5000', '8000'],
['B534', '44', 'F', 'OH', '3000', '5000', '8000'],
['C345', '33', 'F', 'NY', '1234.02', '5000', '6234.02'],
['C345', '33', 'F', 'NY', '1234.05', '5000', '6234.05'],
['D653', '66', 'M', 'PA', '2334.9', '4500.06', '6834.96'],
['D653', '56', 'M', 'PA', '2334.9', '4500.07', '6834.97'],]
df = pd.DataFrame(data,columns=cols)

老实说,我不确定结果如何。我可以考虑在每两行下加一行,标记为True或False。像这样:

Contract Age Sex State Savings Checking Total
A123 23 M NJ 1000.02 3000.00 4000.02
A123 34 M NJ 1000.03 3000.00 4000.03
TRUE FALSE TRUE TRUE FALSE TRUE FALSE
B534 44 F OH 3000.00 5000.00 8000.00
B534 44 F OH 3000.00 5000.00 8000.00
TRUE TRUE TRUE TRUE TRUE TRUE TRUE
C345 33 F NY 1234.02 5000.00 6234.02
C345 33 F NY 1234.05 5000.00 6234.05
TRUE TRUE TRUE TRUE FALSE TRUE FALSE
D653 66 M PA 2334.90 4500.06 6834.96
D653 56 M PA 2334.90 4500.07 6834.97
TRUE FALSE TRUE TRUE TRUE FALSE FALSE

Tags: falsetrueagepdohcontractpany