用于筛选每个类别中最近12个月的数据的Python脚本

2024-10-01 19:31:08 发布

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

我有一个日期框架,在此框架中,我必须根据过去12个月的数据对值进行子集。每个类别的行数不相等(即频率不相同)。因此,我们必须将“开始日期”作为该类别当前的最新日期和12个月前的最新日期相加。现在,在这个数字的值可以不同,像可以有一个单一的价值观,12个价值观等ie它是不固定的

以下是样本数据:

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

在这里,每组都是RIC,日期必须从DIVIDENDEXDATE中选择。我们应保留每个RIC的最大/最晚日期之间的日期,以及自最晚日期起12个月内的任何行

我尝试了以下代码

df = data2.set_index('DividendExDate').last('12M')

但它不起作用


Tags: 数据框架数字类别子集ie频率样本
1条回答
网友
1楼 · 发布于 2024-10-01 19:31:08

您应首先将日期列转换为适当的日期格式,以便理解订单:

import pandas as pd
data2.DIVIDENDEXDATE = pd.to_datetime(data2.DIVIDENDEXDATE)

然后,根据DIVIDENDEXDATE和组内最大日期之间的距离筛选每个组中的行:

from dateutil.relativedelta import relativedelta
filtered_df = (data2.groupby('RIC')
                    .apply(lambda g: g[g['DIVIDENDEXDATE'] >= (g['DIVIDENDEXDATE'].max()-relativedelta(years=1))])
                    .reset_index(level=0, drop=True)) 

我在回答你的问题吗

相关问题 更多 >

    热门问题