我有两个数据框sales
和plan
,如下所示:
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'
。但是,我如何在合并结果中获得更多结果呢?
答案 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