【问题标题】:Find out the difference in two dataframe with same column pandas找出具有相同列熊猫的两个数据框的差异
【发布时间】:2020-04-28 22:17:33
【问题描述】:

我有如下所示的三个数据框

df1:

Unit_ID        Price
1              10
2              20
3              10

一天后,df1 更新为 df2,如下所示。

df2:

Unit_ID        Price
1              10
2              20
3              10
4              15
5              20

从那天起的一天后,df2 更新为 df3,如下所示。我想找出当前数据框中的新单位,如下所示。

df3:

Unit_ID        Price
1              10
2              20
3              10
4              15
5              20
6              80

我想编写一个函数来返回带有熊猫数据框的新单元。 我想找出当前数据框中的新单元,如下所示。

例如在第一次更新时它应该在数据框下方

df:

Unit_ID        Price
4              15
5              20

在下一次更新中,它应该返回下面的数据框

df:

Unit_ID        Price
6              80

步骤 1. 确保在每个数据帧中 Unit_ID 是唯一的。 2. 找出当前表中新的Unit_ID。

【问题讨论】:

  • 如何更新数据?它的代码是什么?无法查看添加了哪些新数据?
  • @jezrael 我认为数据每天都会更新。我想每天找到新的单位。但是没有那个代码。目前我假设 df3 是最新更新的,df2 是之前的,等等。

标签: pandas pandas-groupby


【解决方案1】:

每天都需要将DataFrame复制到新的:

df1 = df.copy()

添加新行后,您可以使用Series.isin 的测试成员资格和~ 的反向掩码:

df_added = df[~df['Unit_ID'].isin(df1['Unit_ID'])]

验证解决方案:

print (df2)
   Unit_ID  Price
0        1     10
1        2     20
2        3     10
3        4     15
4        5     20

print (df3)
   Unit_ID  Price
0        1     10
1        2     20
2        3     10
3        4     15
4        5     20
5        6     80

df_added = df3[~df3['Unit_ID'].isin(df2['Unit_ID'])]
print (df_added)
   Unit_ID  Price
5        6     80

【讨论】:

  • 如果 Unit_ID 是 int 类型,上面的代码是否有效
  • @ALI - 类型不重要,只有必要的唯一值。
  • 如果使用 kafka 更新数据,请您帮我如何将这段代码与 kafka 合并。
  • @ALI - 抱歉,从不使用 kafka,也许您可​​以使用 kafka 标签创建新问题。
  • @ALI - 添加了验证解决方案的代码,你能解释更多不起作用吗?
猜你喜欢
  • 2013-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
相关资源
最近更新 更多