Pandas中的Groupby和N天内获取值

anauzrmj  于 2023-04-28  发布在  其他
关注(0)|答案(1)|浏览(129)

我有下面的dataframe,代表每日股票价值:

print(df)

date         ticker     price
19/04/22      AAPL      10
19/04/22      TSLA      15
20/04/22      TSLA      15
20/04/22      AAPL      10
(...)

对于每个日期和股票代码,我想检索(未来)实际价格值,如果存在于DataFrame中,在N天内(N = 30)。
如何使用Pandas实现这一目标?

bqf10yzr

bqf10yzr1#

您可以使用merge

# convert date to timestamp
df['date'] = pd.to_datetime(df['date'], format='%d/%m/%y')

# merge with shifted date
df.merge(df.assign(date=df['date']-pd.Timedelta('30D')),
         on=['date','ticker'], how='left', suffixes=['','_30D'])

输出:

date ticker  price  price_30D
0 2022-04-19   AAPL     10        NaN
1 2022-04-19   TSLA     15        NaN
2 2022-04-20   TSLA     15        NaN
3 2022-04-20   AAPL     10       11.0
4 2022-05-20   AAPL     11        NaN

备注

1.我添加了一个20/05/22行来说明这种转变。
1.偏移4周或28天会比30天更好,因为偏移30天可能会产生很多NaN值。

相关问题