首页 > 解决方案 > 滞后转移熊猫中的长桌

问题描述

我有一个熊猫数据框,如下所示:

ticker,  t,             shout_t     shout_tminus
A        2010-01-01      22
A        2010-01-02      23
A        2010-01-03      24
B        2010-01-01      44
B        2010-01-02      55
B        2010-01-03      66
C        2010-01-01      100
C        2010-01-02      22
C        2010-01-03      33

我想将此数据帧延迟 1 天并计算shout_minus 值。理想情况下,我会执行 df.shift(1),但这将是一个错误。理想情况下,我想:

A      2010-01-01      22     NA
A      2010-01-02      23     22
A      2010-01-03      24     23

为shout_tminus 的最后一个值。对于 B 和 C 也是如此。我做了以下操作:

ids = ['A','B','C']
df['shoutminus'] = None
for key in ids:
    temp = df[df.ticker == key].copy()
    temp['shout_tminus'] = temp['shout_t'].shift(1)
    df.update(temp)

问题是如果我的数据框太大,我有一个 1000 万行的数据框,只需对 1000 个代码执行此操作就需要很长时间。有没有更快的方法来为长表 df 正确移动系列?谢谢

标签: pythonpandas

解决方案


IICU:你在找吗?最后一行会发生什么?

df['shout_tminus']=df.shift().shout_t
df

在此处输入图像描述


推荐阅读