基于过去12个月跟踪数据的总和

2024-06-16 21:59:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个样本数据,有一年多的数据。根据这些数据,我必须对过去12个月的数值求和。在过去12个月内,行数不是固定的,可以是12、9、4等。此外,12个月应从每个类别出现的第一个日期算起,并且超出(此处为RIC)列A

样本数据:

enter image description here

因此,我们必须按RIC进行分组,这里是其中两个,并对该组首次出现日期前12个月的调整值求和,因此对于TECL.p类,总和应为2020年12月22日至2020年3月24日-不应包括前一年的同一个月。同样,对于CSML,它应该是从2020年12月30日到2020年3月25日

这是我的第一篇文章,所以如果需要什么,请告诉我

Adding  data as text :

RIC         DIVIDENDEXDATE       Adjusted 
==============================================
TECL.P      12/22/2020             0
TECL.P      9/22/2020              0
TECL.P      6/23/2020              0
TECL.P      3/24/2020              0.019
TECL.P      12/23/2019             0.111
TECL.P      9/24/2019              0.007
CSML.OQ     12/30/2020             0.146
CSML.OQ     9/24/2020              0.069
CSML.OQ     6/24/2020              0.62
CSML.OQ     3/25/2020              0.018
CSML.OQ     12/30/2019             0.0657
CSML.OQ     9/24/2019              0.6585

Tags: 数据textdataas文章类别数值样本
1条回答
网友
1楼 · 发布于 2024-06-16 21:59:34

您可以尝试将数据转换为时间序列,并在365天(rolling)长的窗口上使用'365D'

df['DIVIDENDEXDATE'] = pd.to_datetime(df['DIVIDENDEXDATE']) + pd.offsets.BMonthEnd()  # ensures that same month a year earlier will not be considered in sum, but assumes your data has a monthly frequency!
df.set_index(['RIC', 'DIVIDENDEXDATE'], inplace=True)
df.sort_index(level=['RIC', 'DIVIDENDEXDATE'], inplace=True)
df.groupby(level='RIC').apply(lambda grp: grp.reset_index(level='RIC', drop=True).rolling('365D').sum())

相关问题 更多 >