Python 熊猫或numpy是指三个月的总和。作为列表返回

Python 熊猫或numpy是指三个月的总和。作为列表返回,python,numpy,pandas,Python,Numpy,Pandas,假设我有一个如上所述的Dataframe。我怎样才能对每三个月的月份进行平均。并将其作为列表返回 Date 2013-11-30 30 2013-12-31 40 2014-01-31 50 2014-02-28 10 2014-03-31 20 2014-04-30 30 2014-05-31 80 2014-06-30 90 2014-07-31 10 df = pandas.Dataframe() 有没有什么聪明的方法可以通过pan

假设我有一个如上所述的
Dataframe
。我怎样才能对每三个月的月份进行平均。并将其作为列表返回

Date
2013-11-30    30
2013-12-31    40
2014-01-31    50
2014-02-28    10
2014-03-31    20
2014-04-30    30
2014-05-31    80
2014-06-30    90
2014-07-31    10

df = pandas.Dataframe()
有没有什么聪明的方法可以通过
pandas
numpy
实现这一点,因为我想保留每月的天数,以防
dataframe
可能由天组成。

尝试以下方法:

lst[0] = (30 + 40 + 50)/3
lst[1] = (10 + 20 + 30)/3
lst[2] = (90 + 90 + 10)/3
如果要按季度分组:

In [21]: df.groupby(df.index // 3)['val'].sum().tolist()
Out[21]: [120, 60, 180]
数据:

说明:

In [22]: df
Out[22]:
        Date  val
0 2013-11-30   30
1 2013-12-31   40
2 2014-01-31   50
3 2014-02-28   10
4 2014-03-31   20
5 2014-04-30   30
6 2014-05-31   80
7 2014-06-30   90
8 2014-07-31   10

确保日期是您的索引

然后可以执行重采样:

In [25]: df.index // 3
Out[25]: Int64Index([0, 0, 0, 1, 1, 1, 2, 2, 2], dtype='int64')
重新采样的df_将如下所示:

df_resampled = df.resample('90D').mean()
然后您可以使用

Date    
2013-11-30  40
2014-02-28  20
2014-05-29  60
其中i是您的索引

注: 90D表示重新采样90天,对于其他值,您可以查看此链接


如果每个月只有一个条目,并且有3个条目的倍数,您可以简单地用
3
cols将数据重塑为
2D
数组,并在第二个轴上执行
mean
数据。重塑(-1,3)。平均值(轴=1)
。你想按季度分组吗?我选择了df_r=df。重采样('3MS')。平均值()。感谢您指出重采样,非常有帮助
Date    
2013-11-30  40
2014-02-28  20
2014-05-29  60
d.iloc[i].values[0]