【发布时间】:2017-04-25 20:38:14
【问题描述】:
我有一个带有几百万行项目/组的 pandas df,名为 items:
Item Group
0001 A
0002 A
0003 B
0004 A
...
我需要准备 items 与一个名为 forecast 的 df 合并,如下所示:
Item Group Month Forecast
0001 A 5 15
0001 A 6 16
0001 A 7 13
0002 A 5 60
0002 A 7 65
我的合并看起来像:
items.merge(forecast, on=['Item', 'Group', 'Month']
所以我的问题是准备items 看起来像这样:
Item Group Month
0001 A 5
0001 A 6
0001 A 7
0002 A 5
0002 A 6
0002 A 7
...
因此对于给定的一组月份(例如 5, 6, 7),每个项目/组组合都有 len(months) 行,无论是否有预测
forecast 中该项目/组/月的数据。
需要保留顺序(例如,给定项目/行的三个月需要组合在一起,而不是仅附加到末尾的副本,并且项目需要保持顺序)。
到目前为止,我一直在研究 stack() 作为一个可能的选项,但我还没有得到任何工作(除了循环遍历 df,将行 * 2 附加到一个新的空 df 中,这似乎非常低效)。
这样做的正确方法是什么?
【问题讨论】:
-
合并将包含哪些新信息?没有预测的项目/组/月的 NaN?
-
@Charlie 是的。但我已经简化了数据框。
items和forecast也有其他列,所以真正的目标是将来自forecast的“预测”信息带入items并为所有缺失的预测创建 NaN。此外,items是forecasts的超集,因此直接在forecast上执行操作不会为所有项目创建它。
标签: python pandas dataframe merge