首页 > 解决方案 > 将数据帧重新采样到每年的前 4 个月并将值相加

问题描述

我希望按照我的标题中提到的那样做一些事情,即首先从每年中提取 4 个月,然后将每年前 4 个月的值相加。

我的尝试:

a = pd.DataFrame({'ds': [d for d in pd.date_range(start='2018-01-01', end='2020-05-30')],
             'value': [1 for v in range(881)]})
a.resample('Y', on='ds', loffset='4M').sum()

我当前的输出:

    value
ds  
2019-04-30  365
2020-04-30  365
2021-04-30  151

我的预期输出:

    value
ds  
2018-04-30  120
2019-04-30  120
2020-04-30  121

标签: pandas

解决方案


resample您可以使用boolean indexingwithSeries.dt.monthSeries.ltfor lesslike过滤前 4 个 moths 5,也可以2018使用YSstart by 表示年初:

df = a[a['ds'].dt.month.lt(5)].resample('YS', on='ds', loffset='4M').sum()
print (df)
            value
ds               
2018-04-30    120
2019-04-30    120
2020-04-30    121

推荐阅读