组合键上的pandas数据帧Concat/Usert



假设我有以下数据集

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和季节相同,则更新现有记录,如果它们不同,则添加新记录。换句话说,

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

3.如果记录不同,年份/id为不同的制作新的记录

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

这是预期的输出吗?基于您的

基本上,如果ID和季节相同,则更新现有记录,如果它们不同,则添加一个新记录。

我们连接两个数据帧,按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

最新更新