pandas - 将数据帧重新采样到每年的前 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
解决方案
resample
您可以使用boolean indexing
withSeries.dt.month
和Series.lt
for less
like过滤前 4 个 moths 5
,也可以2018
使用YS
start 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