如何使用与十进制类型值的大熊猫TimeSeries的平均方法?(How use the mean m

2019-09-19 10:26发布

我需要存储在大熊猫的Python小数类型值TimeSeries / DataFrame的对象。 熊猫采用“GROUPBY”时,和时间序列/数据帧“的意思是”给我一个错误。 基于彩车下面的代码工作得很好:

[0]: by = lambda x: lambda y: getattr(y, x)

[1]: rng = date_range('1/1/2000', periods=40, freq='4h')

[2]: rnd = np.random.randn(len(rng))

[3]: ts = TimeSeries(rnd, index=rng)

[4]: ts.groupby([by('year'), by('month'), by('day')]).mean()
2000  1  1    0.512422
         2    0.447235
         3    0.290151
         4   -0.227240
         5    0.078815
         6    0.396150
         7   -0.507316

但是,如果做同样的使用十进制值,而不是花车我得到一个错误:

[5]: rnd = [Decimal(x) for x in rnd]       

[6]: ts = TimeSeries(rnd, index=rng, dtype=Decimal)

[7]: ts.groupby([by('year'), by('month'), by('day')]).mean()  #Crash!

Traceback (most recent call last):
File "C:\Users\TM\Documents\Python\tm.py", line 100, in <module>
print ts.groupby([by('year'), by('month'), by('day')]).mean()
File "C:\Python27\lib\site-packages\pandas\core\groupby.py", line 293, in mean
return self._cython_agg_general('mean')
File "C:\Python27\lib\site-packages\pandas\core\groupby.py", line 365, in _cython_agg_general
raise GroupByError('No numeric types to aggregate')
pandas.core.groupby.GroupByError: No numeric types to aggregate

该错误消息是“GroupByError(‘否数值类型聚集’)”。 是否有机会使用标准的聚合如求和,平均值和quantileon在时间序列或包含数据帧十进制值?

为什么好好尝试一下它的工作,是有机会,有一个同样快速的选择,如果它是不可能的?

编辑:我刚刚意识到,大部分的其他功能(最大,最小,平均等),做工精细,但并非意味着功能,我迫切需要:-(。

Answer 1:

import numpy as np
ts.groupby([by('year'), by('month'), by('day')]).apply(np.mean)


文章来源: How use the mean method on a pandas TimeSeries with Decimal type values?