【发布时间】:2018-09-21 00:38:02
【问题描述】:
我有一个包含日期、资产和价格/数量数据的 DataFrame。我正在尝试提取 7 天前的数据,但问题是我无法使用 shift(),因为我的表中缺少日期。
date cusip price price_7daysago
1/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 1
1/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'
我也想过做一些类似于this 的事情来填补缺失的日期,但我的问题是我有多个索引、日期和 cusips,所以我不能只重新索引。
【问题讨论】:
-
想要的输出是什么?
-
抱歉给您带来了困惑——更新为所需的输出(7 天前的滞后)
标签: python pandas indexing pandas-loc