我有一个像这样的数据集:
Region Product Date Order
North A 1/1/2019 10
North A 1/2/2019 11
....
North A 1/29/2019 1
North A 1/30/2019 150
我通过使用循环创建滞后特征(以前的日期顺序):
temp_df = pd.DataFrame()
for k in df['Region'].unique():
temp_df2 = df[df['Region']==k]
for j in temp_df2['Product'].unique():
temp_df3 = temp_df2[temp_df2['Product']==j]
for i in range(28,56):
temp_df3['lag_{}'.format(-i)] = temp_df3['Order'].shift(i).fillna(0)
temp_df = temp_df.append(temp_df3)
运行此嵌套循环的时间很长。如何更快地预处理数据?提前致谢!
预计输出:
Region Product Date Order Lag_28 Lag_29
North A 1/1/2019 10 N/A N/A
....
North A 1/30/2019 150 11 10
问题来源:stackoverflow
使用groupby
会更快(更干净):
groups = df.groupby(['Region', 'Product'])['Order']
for i in range(28,56):
df[f'Lag_{i}'] = groups.shift(i)
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。