假设我有以下数据集
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相同,则记录来自新数据集
3.如果记录不同,年份/id为不同的制作新的记录
这在数据帧中可能吗?如果没有,我是否应该考虑另一种结构来实现这一点?我们的数据集只是拼花文件,所以我们可以自由地操作它们,无论我们喜欢
这是预期的输出吗?基于您的
基本上,如果ID和季节相同,则更新现有记录,如果它们不同,则添加一个新记录。
我们连接两个数据帧,按ID
和Year
分组,并保留每组中的最后一个(因此来自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