基于Pandas JOIN实现DataFrame版本控制与差异对比
问题:用Pandas JOIN操作对比DataFrame版本变更
我正在对比两个DataFrame以检查二者间的变更情况,这是版本控制脚本的一部分,为此我编写了简化示例来寻找解决方案:
import pandas as pd data = {'ID': ['1', '2', '3', '4'], 'Date': ['23-01-2023', '01-12-1995', '03-07-2013', '05-09-2013'], 'Time': ['01:45:08', '02:15:21', '23:57:14', '03:57:15'], 'Path': ['//server/test/File1.txt', '//server/test/File2.txt', '//server/test/File3.txt', '//server/test/File4.txt'], } data2 = {'ID': ['1', '2', '3', '4'], 'Date': ['23-01-2023', '03-07-2013', '01-12-1995', '21-11-1991'], 'Time': ['01:45:08', '23:57:14', '02:17:21', '03:18:31'], 'Path': ['//server/test/File1.txt', '//server/test/File3.txt', '//server/test/File2.txt', '//server/test/File5.txt'], } df = pd.DataFrame(data) df2 = pd.DataFrame(data2)
生成的两个DataFrame如下:
DataFrame 1
| ID | Date | Time | Path | | 1 | 23-01-2023 | 01:45:08 | //server/test/File1.txt | | 2 | 01-12-1995 | 02:15:21 | //server/test/File2.txt | | 3 | 03-07-2013 | 23:57:14 | //server/test/File3.txt | | 4 | 05-09-2013 | 03:57:15 | //server/test/File4.txt |
DataFrame 2
| ID | Date | Time | Path | | 1 | 23-01-2023 | 01:45:08 | //server/test/File1.txt | | 2 | 03-07-2013 | 23:57:14 | //server/test/File3.txt | | 3 | 01-12-1995 | 02:17:21 | //server/test/File2.txt | | 4 | 21-11-1991 | 03:18:31 | //server/test/File5.txt |
以第一个DataFrame为基准,变更情况如下:
- ID为4的文件已删除
- ID为2的文件已修改
- 新增了一个文件(DataFrame2中的ID4)
最终希望得到如下输出:
| ID | Date | Time | Path | Status | | 1 | 23-01-2023 | 01:45:08 | //server/test/File1.txt | - | | 2 | 01-12-1995 | 02:15:21 | //server/test/File2.txt | UPDATED | | 3 | 03-07-2013 | 23:57:14 | //server/test/File3.txt | - | | 4 | 05-09-2013 | 03:57:15 | //server/test/File4.txt | DELETED | | 5 | 21-11-1991 | 03:18:31 | //server/test/File5.txt | ADDED |
能否仅通过Pandas的JOIN操作实现该需求?
内容的提问来源于stack exchange,提问作者Ralk
相关产品推荐
相关产品推荐

