【发布时间】:2021-11-02 09:51:50
【问题描述】:
我每个月都会收集包含要存储在我们数据库中的员工详细信息的数据。 我需要找到一种解决方案,将上个月存储的数据与收到的数据进行比较,并且对于任何列发生变化的每一行,它将返回到一个新的数据帧中。
我还需要以某种方式知道这个新返回的数据帧的每一行中的哪些列在发生这种比较时发生了变化。
还有一些重要的细节要提:
- 每一列还可以在任何数据框中包含空白值;
- 数据框具有相同的列名,但不一定具有相同的数据类型;
- 数据帧的行数不一定相同;
- 如果一行没有找到它的索引匹配,不要返回到新的数据框;
- 数据帧的行可以通过名为“Index”的列进行匹配
因此,例如,我们将拥有这个数据框(它只是真实数据框的一部分,因为它有 63 列):
df1:
Index Department Salary Manager Email Start_Date
1 IT 6000.00 Jack ax@i.com 01-01-2021
2 HR 7000 O'Donnel ay@i.com
3 MKT $7600 Maria d 30-06-2021
4 I'T 8000 Peter az@i.com 14-07-2021
df2:
Index Department Salary Manager Email Start_Date
1 IT 6000.00 Jack ax@i.com 01-01-2021
2 HR 7000 O'Donnel ay@i.com 01-01-2021
3 MKT 7600 Maria dy@i.com 30-06-2021
4 IT 8000 Peter az@i.com 14-07-2021
5 IT 9000 John NOT PROVIDED
6 IT 9900 John NOT PROVIDED
df3:
Index Department Salary Manager Email Start_Date
2 HR 7000 O'Donnel ay@i.com 01-01-2021
3 MKT 7600 Maria dy@i.com 30-06-2021
4 IT 8000 Peter az@i.com 14-07-2021
**本例的不同之处在于:
- 在索引 2 的行中添加了开始日期
- 更正了第 3 行的工资格式和电子邮件
- 已针对第 4 行索引更正了部门格式
进行这种比较的最佳方法是什么? 我不确定是否有一个简单的解决方案来理解每个字段的变化,但返回包含至少 1 次变化的行的数据框会有所帮助。
感谢您的支持!
【问题讨论】:
标签: python pandas database dataframe compare