我有一个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)然后获得每个季度的平均人数
谢谢!
答案 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
解决方案
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()