开发者社区> 问答> 正文

如何在Pandas中生成更快的sliding-window特征?

我有一个像这样的数据集:

 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

展开
收起
is大龙 2020-03-24 14:25:08 524 0
1 条回答
写回答
取消 提交回答
  • 使用groupby会更快(更干净):

    groups = df.groupby(['Region', 'Product'])['Order']
    
    for i in range(28,56):
        df[f'Lag_{i}'] = groups.shift(i)
    

    回答来源:stackoverflow

    2020-03-24 14:25:16
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载