У меня есть фрейм данных, который содержит даты, активы, а затем данные о цене / объеме.Я пытаюсь получить данные за 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
Я пытался создать лямбда-функцию, чтобы попытаться использовать loc и timedelta для создания этого сдвига, но мне удалось вывести только пустые пустые массивы:
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'
IЯ также подумал о том, чтобы сделать что-то похожее на this , чтобы заполнить пропущенные даты, но моя проблема в том, что у меня есть несколько индексов, дат и фрагментов, поэтому я не могу просто переиндексировать это.
Я не совсем уверен, что еще я могу сделать, но любая помощь будет принята с благодарностью!