为什么我的数据总和会在合并中发生变化?

时间:2018-06-08 14:57:23

标签: python pandas

我有两个数据框salesplan,如下所示:

                                  units
  retailer  product  date 

  1         1        2018-12-30   355
  1         1        2017-12-31   312
  1         1        2018-01-01   370
  ...


                                  plan_units
  retailer  product  date
  1         1        2018-01-01   360
  1         1        2018-01-02   380
  1         1        2018-01-03   330
  ...

[retailer, product, date]是索引。

在合并之前,sales['units'].sum()是123,456。但是:

pd.merge(sales, plan, left_index=True, right_index=True, how='outer')['units'].sum() 

257,379 ,比以前更多。

两个数据帧的索引不相同,因此how='outer'。但是,我如何在合并结果中获得更多结果呢?

1 个答案:

答案 0 :(得分:2)

问题应该是销售和计划包含重复索引,这使得合并为每个匹配行创建多行

例如,即使使用concat,您也会遇到同样的问题,因为默认值为outer

pd.concat([sales,plan],1)['units'].sum()

示例:

df1=pd.DataFrame({'key':[1,1,2],'val':[1,1,1]})
df2=pd.DataFrame({'key':[1,1,2],'val':[1,1,1]})
df1.merge(df2,on='key')
Out[291]: 
   key  val_x  val_y
0    1      1      1
1    1      1      1
2    1      1      1
3    1      1      1
4    2      1      1