首页 > 解决方案 > 在数据框的索引中收集每年的相同月份

问题描述

这是我的每月数据:

date_range = pd.date_range(start = '2015-01-31', end = '2019-12-31', freq='M', name = 'Date')
cfs = pd.DataFrame(\
        [0.36,  0.42,   0.28,   0.31,   0.25,   0.32,   0.42,   0.38,   0.25,   0.31,   0.31,   0.31,
         0.37,  0.36,   0.36,   0.24,   0.26,   0.31,   0.48,   0.45,   0.35,   0.28,   0.35,   0.40,
         0.38,  0.40,   0.31,   0.23,   0.29,   0.22,   0.43,   0.49,   0.24,   0.29,   0.24,   0.46,
         0.38,  0.38,   0.42,   0.25,   0.25,   0.26,   0.29,   0.47,   0.36,   0.30,   0.42,   0.32,
         0.42,  0.40,   0.40,   0.29,   0.22,   0.33,   0.37,   0.50,   0.38,   0.23,   0.25,   0.27], \

    index = date_range, columns = ['Values'])

它的输出是这样的:

            Values
Date
2015-01-31    0.36
2015-02-28    0.42
2015-03-31    0.28
2015-04-30    0.31
2015-05-31    0.25
2015-06-30    0.32
        ...
2019-09-30    0.38
2019-10-31    0.23
2019-11-30    0.25
2019-12-31    0.27

但我想实现这样的输出:

            Values
Date
2015-01-31    0.36
2016-01-31    0.37
2017-01-31    0.38
2018-01-31    0.38
2019-01-31    0.42
2015-02-28    0.42
2016-02-29    0.36
2017-02-28    0.40
2018-02-28    0.38
2019-02-28    0.40
2015-03-31    0.28
2016-03-31    0.36
2017-03-31    0.31
        ...
2015-12-31    0.31
2016-12-31    0.40
2017-12-31    0.46
2018-12-31    0.32
2019-12-31    0.27

我想收集每年所有相同的月份并用它们创建新的数据框。谁能帮我?

标签: pandaspandas-groupby

解决方案


您可以临时分配一month列并排序:

cfs = cfs.assign(month=cfs.index.month).sort_values('month').drop('month', axis=1)

推荐阅读