在组合键上插入/插入数据帧

2024-06-02 05:19:58 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下数据集

ID | Name | balance | Year
112 Johnstown $321 2020
321 Oregon $214 2020
121 Jackson $254 2020

和以下传入的数据集

112 Johnstown $321 2021
321 Oregon $216 2020
121 Jackson $254 2020

我想做的是结合这两个数据集,同时保留季节性的概念。基本上,如果一条记录的任何字段(年份除外)发生了更改,则更新该记录。然而,如果记录的年份发生了变化,那么就创造一个新的记录

在我们的例子中,结果数据集如下所示

112 Johnstown $321 2021
112 Johnstown $321 2020
321 Oregon $216 2020
121 Jackson $254 2020

这本质上是一个升级操作,我认为这是一个ID和季节组合键上的升级操作。基本上,如果ID和季节相同,则更新现有记录;如果ID和季节不同,则添加新记录。换句话说

  1. 如果记录完全相同,则不执行任何操作
  2. 如果记录不同,但年份/id相同,则取该记录 从新数据集

3.如果记录不同且年份/id不同 创造新纪录

这在数据帧中可能吗?如果没有,我是否应该考虑另一种结构来实现这一点?我们的数据集只是拼花文件,所以我们可以随意操作它们


Tags: 数据nameid概念记录year例子balance
1条回答
网友
1楼 · 发布于 2024-06-02 05:19:58

这是预期产出吗?基于你的

Basically, if the ID and season are the same update the existing record, and if they're different add a new record.

我们连接两个数据帧,按IDYear分组,并在每个组中保留最后一个(因此,来自df2)元素

>>> pd.concat([df1, df2]).groupby(["ID", "Year"], as_index=False).last()
    ID  Year       Name balance
0  112  2020  Johnstown    $321
1  112  2021  Johnstown    $321
2  121  2020    Jackson    $254
3  321  2020     Oregon    $216

相关问题 更多 >