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]