我试图用pandas数据帧比较两个csv文件。一个是一个主表,它每天都将数据附加到它上面(测试_主.csv). 第二个是每日报告(测试_每日.csv)包含我想附加到测试的数据_主.csv. 在
我从这些文件创建了两个pandas数据帧:
import pandas as pd
dfmaster = pd.read_csv(test_master.csv)
dfdaily = pd.read_csv(test_daily.csv)
我希望将每日列表与主列表进行比较,以查看每日列表中是否存在已在主列表中的重复行。如果是这样,我希望他们从dfdaily中删除重复项。然后我想将这个非重复数据写入dfmaster。在
重复数据将始终是整行。我的计划是一行一行地遍历这些工作表来进行比较。在
我意识到我可以将我的日常数据附加到dfmaster数据帧中,并使用drop\u duplicates删除重复项。但是,我无法找出如何删除dfdaily数据帧中的重复项。我需要能够写回dfdaily数据进行测试_每日.csv(或另一个新文件)没有重复数据。在
下面是一个数据帧的示例。在
试验_主.csv在
^{pr2}$试验_每日.csv在
+-------------+-------------+-------------+
| column 1 | column 2 | column 3 |
+-------------+-------------+-------------+
| duplicate 1 | duplicate 1 | duplicate 1 |
| duplicate 2 | duplicate 2 | duplicate 2 |
| 10 | 11 | 12 |
| 13 | 14 | 15 |
+-------------+-------------+-------------+
期望输出为:
试验_主.csv在
+-------------+-------------+-------------+
| column 1 | column 2 | column 3 |
+-------------+-------------+-------------+
| 1 | 2 | 3 |
| 4 | 5 | 6 |
| 7 | 8 | 9 |
| duplicate 1 | duplicate 1 | duplicate 1 |
| duplicate 2 | duplicate 2 | duplicate 2 |
| 10 | 11 | 12 |
| 13 | 14 | 15 |
+-------------+-------------+-------------+
试验_每日.csv在
+----------+----------+----------+
| column 1 | column 2 | column 3 |
+----------+----------+----------+
| 10 | 11 | 12 |
| 13 | 14 | 15 |
+----------+----------+----------+
任何帮助将不胜感激!在
编辑
我错误地认为set difference问题的解决方案解决了我的问题。我遇到了一些这样的解决方案不起作用的案例。我相信这与特洛伊D在下面的评论中提到的指数标签有关。特洛伊D的解决方案就是我现在使用的解决方案。在
试试这个:
我将2个索引装箱,然后将第2-4行设置为重复:
输出:
^{pr2}$然后,添加一个多索引级别以标识哪些数据来自哪个数据帧:
现在按照您的建议合并并删除重复项:
输出:
在这里,您可以看到组合的数据帧,其中的数据源标记在索引中。现在只需对每日数据进行切片:
输出:
相关问题 更多 >
编程相关推荐