每三列的平均值 pandas

3

我有一个类似于这样的DataFrame:

            2016-01    2016-02    2016-03    2016-04    2016-05    2016-06 ....
    name

    John    1000       1500       1800        2000       1600       1000

除了它有10730个条目。我希望创建一个新的DataFrame,其中包含每年四分之一(3个月)的平均值。例如:

        2016q1    2016q2    .....
John    143.333   1533.333

我的解决方案很糟糕,而且耗费了太多时间,因此任何改进都会更好。谢谢!

1个回答

4

将其转换为日期时间,然后进行重新采样

df.columns=pd.to_datetime(df.columns,format='%Y-%m')
df
Out[7]: 
      2016-01-01  2016-02-01  2016-03-01  2016-04-01  2016-05-01  2016-06-01
John        1000        1500        1800        2000        1600        1000
df=df.resample('Q',axis=1).mean()
df.columns=pd.PeriodIndex(df.columns, freq='Q')
df
Out[14]: 
           2016Q1       2016Q2
John  1433.333333  1533.333333

我想太多了,基于重复范围创建了一个字典来进行分组。不错的方法。 - Bharath M Shetty
@Dark 哈哈,字典也是一个不错的选择,因为它更加可定制 :-) - BENY
嗨@Wen,感谢您的迅速回复,对于我的缓慢回复感到抱歉。那个方案完美地解决了问题,谢谢! - Elias Uhalde
@EliasUhalde 没问题~ :-) 祝你编程愉快。 - BENY

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接