gpt4 book ai didi

python - 复制行以准备 Pandas DataFrame 以进行基于日期的合并

转载 作者:行者123 更新时间:2023-11-28 22:28:20 25 4
gpt4 key购买 nike

我有一个 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 中该 Item/Group/Month 的数据。

需要保留顺序(例如,给定项目/行的三个月需要分组在一起,而不是仅将副本附加到末尾,并且项目需要保持顺序)。

到目前为止,我一直在研究 stack() 作为一个可能的选项,但我还没有得到任何工作(除了循环遍历 df,将行 * 2 附加到一个新的空 df,这似乎非常低效)。

正确的做法是什么?

最佳答案

months = [5, 6, 7]

idx = items.index.repeat(len(months))
months_ = months * len(items)
items_ = items.loc[idx].assign(Month=months_).reset_index(drop=True)

print(items_)

Item Group Month
0 1 A 5
1 1 A 6
2 1 A 7
3 2 A 5
4 2 A 6
5 2 A 7
6 3 B 5
7 3 B 6
8 3 B 7
9 4 A 5
10 4 A 6
11 4 A 7

forecast.merge(items_)

Item Group Month Forecast
0 1 A 5 15
1 1 A 6 16
2 1 A 7 13
3 2 A 5 60
4 2 A 7 65

关于python - 复制行以准备 Pandas DataFrame 以进行基于日期的合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43620520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com