繁体   English   中英

每季度对数据框重新采样一次,但使用不同的结束月份

[英]Resample dataframe quarterly but using different end months

我想对数据框中每个月的数据求和,但要对每个季度的每个月进行累加。 所以输入是:

Index          Data
2017-02-05     10
2017-03-04     20
2017-06-20     40

该代码在下面工作:

cum_df = monthly_df.groupby(by=[monthly_df.index.quarter, monthly_df.index.year]).cumsum()

具有以下输出:

Index         Data
2017-02-28    10
2017-03-31    30
2017-04-31    0
2017-05-31    0
2017-06-30    40

但是,我不希望这些季度在3月/ 6月/ 9月/ 12月结束,而希望在2月/ 5月/ 8月/ 11月这样的自定义季度结束。 如何更改代码以适用于自定义季度末?

使用pd.Grouper(freq='anchored_offset')其中anchored_offset被期望的“锚定的偏移”,从文档字符串: https://pandas.pydata.org/pandas-docs/stable/timeseries.html#anchored-offsets

例:

df = pd.DataFrame(index=pd.date_range(start='2017-02-01', end='2018-1-31', freq='W'))

# Label each Sunday with a 1
df[0] = 1

# Group by quarter with year ending in November ('Q-NOV'), but label each quarter
# with its start date ('QS-NOV')
df.groupby(pd.Grouper(freq='QS-NOV')).sum()

             0
2017-02-01  13
2017-05-01  13
2017-08-01  13
2017-11-01  13

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM