Python/Pandas UPSERT 等效项?

标签 python pandas

我正在尝试读取一堆 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/

相关文章:

python - 在 Python 中没有 .py 的模块作为脚本?

python - 强制 mysqldb dict 游标返回带有表名的所有列名前缀

python - 从 Pandas 中的列生成对

python - 在 pandas 中聚合创建集合时忽略 NaT

python - 为什么 Pandas 中的 groupby 不打印所有列?

python - 按条件删除行并填充 pandas 数据框中的新列

python - 在 python 中转换框架 pandas

python - 如何在 python numpy 中获取特定值的数组的列和行?

Python3 : How to show "stopwatch" style time of long running blackbox function

python - 如何从列表创建列表?