我正在尝试读取一堆 Excel 报告(使用 forloop)并将其合并到一个最终数据帧中。每个文件针对不同的月份,并包含日期、报价编号和报价计数(对于 XYZ 列)。然而,我发现 Excel 文件中的报价编号重复,日期相同,但报值(value)不同。
例如,下面我有两个数据框(或 9 月和 10 月的 Excel 报告)。我想将它们合并在一起,但只保留“10 月”报告中的引用编号“111”,因为它是最新的,并且包含“X”列的附加引用。
假设我的 Excel 报告以月/年命名,有没有一种简单的方法可以做到这一点?我认为逻辑基本上是在每个文件中读取并将其附加到主数据帧中。如果文件包含与主文件中相同的报价编号和日期,则将该报价编号的现有“XYZ”值替换为新文件的报价编号的 XYZ 值。希望这一切都有道理。我想我可以运行另一个内部 forloop,但我确信一定有更好/更有效的方法来做到这一点。非常感谢!!
df_september = pd.DataFrame({'Quote number': [111, 222, 333], "Quote Date": ['2021-09-08', '2021-09-08', '2021-09-08'],
'X': [2, 1, 3], 'Y': [2, 2, 0], 'Z': [4, 2, 5]})
df_october = pd.DataFrame({'Quote number': [111, 444, 555], "Quote Date": ['2021-09-08', '2021-09-11', '2021-09-11'],
'X': [3, 5, 5], 'Y': [2, 2, 0], 'Z': [4, 2, 5]})
最佳答案
df_september.append(df_october).drop_duplicates('Quote number', keep='last')
关于Python/Pandas UPSERT 等效项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70221051/