为了账号安全,请及时绑定邮箱和手机立即绑定

如何在多索引熊猫数据帧上将数据滞后 x 天?

如何在多索引熊猫数据帧上将数据滞后 x 天?

FFIVE 2021-06-10 14:33:52
我有一个包含日期、资产和价格/数量数据的数据框。我试图从 7 天前提取数据,但问题是我无法使用 shift(),因为我的表中缺少日期。 date   cusip   price   price_7daysago1/1/2017    a   1   1/1/2017    b   2   1/2/2017    a   1.2 1/2/2017    b   2.3 1/8/2017    a   1.1         11/8/2017    b   2.2         2我已经尝试创建一个 lambda 函数来尝试使用 loc 和 timedelta 来创建这种移位,但我只能输出空的 numpy 数组:def row_delta(x, df, days, colname):    if datetime.strptime(x['recorddate'], '%Y%m%d') - timedelta(days) in [datetime.strptime(x,'%Y%m%d') for x in   df['recorddate'].unique().tolist()]:        return df.loc[(df['recorddate_date'] == df['recorddate_date'] - timedelta(days)) & (df['cusip'] == x['cusip']) ,colname]    else:        return 'nothing'我也想过做类似的东西的这个缺少的日期,以填补,但我的问题是,我有多个指标,日期和cusips这样我就可以不只是这个重新编制。我不确定我还能做什么,但任何帮助将不胜感激!
查看完整描述

2 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

您可以将date和设置cusip为索引unstackshift一起使用

shifted = df.set_index(["date", "cusip"]).unstack().shift(7).stack()

然后简单地shifted与您的原始合并df


查看完整回答
反对 回复 2021-06-22
  • 2 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信