Pandas使用某些模式重命名列名并进行聚合

时间:2016-12-19 02:07:09

标签: python pandas

我有一个pandas数据框,如下所示:

school  2010-01 2010-02 2010-03 2010-04 .... 201612
  A      500     497     501     512          512
  B      350     340     352     343          351

它包含每个月的学校名单和人数。我希望 1)将Jan-Mar全部改为Q1,Apr-Jun至Q2,Jul-Sep至Q3以及Oct-Dec至Q4,例如:2010-01至2010Q1,2010-02至2010Q1,2010-04至2010Q2。 2)然后获得每个季度的平均人数

谢谢!

1 个答案:

答案 0 :(得分:1)

考虑df

pidx = pd.PeriodIndex(start='2010-01', end='2016-12', freq='M')

df = pd.DataFrame(
    np.random.randint(300, 600, size=(2, 84)),
    index=pd.Index(list('AB'), name='school'),
    columns=pidx
)

df

enter image description here

解决方案

df.groupby(df.columns.to_timestamp().to_period('Q'), axis=1).mean()

如果您的列值是字符串...这将起作用

df.groupby(pd.to_datetime(df.columns).to_period('Q'), axis=1).mean()

enter image description here