小编mch*_*l_k的帖子

加速大熊猫过去60天的意思

我使用来自过去的kaggle挑战的数据,这些数据基于多个商店的面板数据和跨越2.5年的时间段.每个观察包括给定商店日期的客户数量.对于每个商店日期,我的目标是计算过去60天内访问该商店的平均客户数量.

下面的代码完全符合我的需要.但是,它会永远持续下去 - 处理c.800k行需要一个晚上.我正在寻找一种更快捷地实现同一目标的聪明方法.

我已经在初始数据集中包含了5个相关变量的观察结果:商店ID(商店),日期和客户数量("客户").

注意:

  • 对于迭代中的每一行,我最终使用.loc而不是例如row ["Lagged No of customers"]来编写结果,因为"row"不会在单元格中写入任何内容.我想知道为什么会这样.
  • 我通常使用"apply,axis = 1"来填充新列,所以我真的很感激基于此的任何解决方案.我发现"apply"适用于每一行,使用相同行级别的值跨列进行计算.但是,我不知道"apply"函数如何涉及不同的行,这就是这个问题所需要的.我到目前为止唯一的例外是"差异",这在这里没用.

谢谢.


样本数据:

pd.DataFrame({
  'Store': {0: 1, 1: 1, 2: 1, 3: 1, 4: 1},
  'Customers': {0: 668, 1: 578, 2: 619, 3: 635, 4: 785},
  'Date': {
    0: pd.Timestamp('2013-01-02 00:00:00'),
    1: pd.Timestamp('2013-01-03 00:00:00'),
    2: pd.Timestamp('2013-01-04 00:00:00'),
    3: pd.Timestamp('2013-01-05 00:00:00'),
    4: pd.Timestamp('2013-01-07 00:00:00')
  }
})
Run Code Online (Sandbox Code Playgroud)

代码有效但速度极慢:

import pandas as pd
import numpy as np
data = pd.read_csv("Rossman - no of cust/dataset.csv")
data.Date = pd.to_datetime(data.Date)
data.Customers = data.Customers.astype(int) …
Run Code Online (Sandbox Code Playgroud)

python apply pandas

7
推荐指数
1
解决办法
113
查看次数

标签 统计

apply ×1

pandas ×1

python ×1