Pandas 为总金额定义非标准年期间

Pandas 为总金额定义非标准年期间,pandas,cumsum,Pandas,Cumsum,我有一个带有日期时间索引的长时间序列。我想每年计算一次,但我想将我的年份定义为明年10月1日至9月30日 ex: cum sum on 1 oct 2018 to 30 sept 2019 谢谢你的帮助 一种方法是在明年手动屏蔽10,11,12: # toy data s = pd.DatetimeIndex(['2017-09-01', '2017-10-01', '2017-11-01']) df = pd.DataFrame([0,1,2], index=s) # mask Oct,

我有一个带有日期时间索引的长时间序列。我想每年计算一次,但我想将我的年份定义为明年10月1日至9月30日

ex: cum sum on 1 oct 2018 to 30 sept 2019

谢谢你的帮助

一种方法是在明年手动屏蔽
10,11,12

# toy data
s = pd.DatetimeIndex(['2017-09-01', '2017-10-01', '2017-11-01'])
df = pd.DataFrame([0,1,2], index=s)

# mask Oct, Nov, Dec
groups = np.where(df.index.month > 9, df.index.year + 1, df.index.year)
# array([2017, 2018, 2018], dtype=int64)

df.groupby(groups).cumsum()
第二种选择是将指数转换为会计年度:

groups = df.index.to_period('Q-SEP').qyear
# Int64Index([2017, 2018, 2018], dtype='int64')
输出:

            0
2017-09-01  0
2017-10-01  1
2017-11-01  3

我喜欢财政方式,清洁一条线。。。感谢这两个选项!