Python 如何实现在重采样()中使用的descripe()函数

Python 如何实现在重采样()中使用的descripe()函数,python,pandas,Python,Pandas,我正在处理表示向量(磁振和方向)的时间序列数据。我想查看我的数据并使用description函数作为how参数 但是,descripe方法使用标准平均值,我想使用一个特殊函数来平均方向。因此,我基于pandas.Series.descripe()的实现实现了自己的descripe方法: def directionAverage(x): 结果=np.arctan2(np.mean(np.sin(x)),np.mean(np.cos(x))) 如果结果

我正在处理表示向量(磁振和方向)的时间序列数据。我想查看我的数据并使用
description
函数作为
how
参数

但是,
descripe
方法使用标准平均值,我想使用一个特殊函数来平均方向。因此,我基于
pandas.Series.descripe()
的实现实现了自己的
descripe
方法:

def directionAverage(x):
结果=np.arctan2(np.mean(np.sin(x)),np.mean(np.cos(x)))
如果结果<0:
结果+=2*np.pi
返回结果
def方向描述(x):
数据=[directionAverage(x),x.std(),x.min(),x.quantile(0.25),x.median(),x.quantile(0.75),x.max()]
名称=[“平均值”、“标准值”、“最小值”、“25%”、“50%”、“75%”、“最大值”]
返回序列(数据,索引=名称)
问题是,当我这样做时:

我得到了这个异常(显示了最后几行):


问题是:我如何实现自己的
descripe
函数,使其与
resample
一起工作?

您可以
groupby
而不是重采样,其中组是一个时间单位。对于该组,您可以应用您选择的功能,例如directionAverage功能

请注意,我正在导入TimeGrouper函数以允许按时间间隔进行分组

import pandas as pd
import numpy as np
from pandas.tseries.resample import TimeGrouper

#group  your data
new_data = df['direction'].groupby(TimeGrouper('10min'))
#apply your function to the grouped data
new_data.apply(directionDescribe)

可能是df['direction']。重新采样('10min')。应用(directiondescription)感谢您的建议。它返回一个结果,但不是每次都返回。
  File "C:\Python26\lib\site-packages\pandas\core\generic.py", line 234, in resample
    return sampler.resample(self)
  File "C:\Python26\lib\site-packages\pandas\tseries\resample.py", line 83, in resample
    rs = self._resample_timestamps(obj)
  File "C:\Python26\lib\site-packages\pandas\tseries\resample.py", line 217, in _resample_timestamps
    result = grouped.aggregate(self._agg_method)
  File "C:\Python26\lib\site-packages\pandas\core\groupby.py", line 1626, in aggregate
    result = self._aggregate_generic(arg, *args, **kwargs)
  File "C:\Python26\lib\site-packages\pandas\core\groupby.py", line 1681, in _aggregate_generic
    return self._aggregate_item_by_item(func, *args, **kwargs)
  File "C:\Python26\lib\site-packages\pandas\core\groupby.py", line 1706, in _aggregate_item_by_item
    result[item] = colg.aggregate(func, *args, **kwargs)
  File "C:\Python26\lib\site-packages\pandas\core\groupby.py", line 1357, in aggregate
    result = self._aggregate_named(func_or_funcs, *args, **kwargs)
  File "C:\Python26\lib\site-packages\pandas\core\groupby.py", line 1441, in _aggregate_named
    raise Exception('Must produce aggregated value')
import pandas as pd
import numpy as np
from pandas.tseries.resample import TimeGrouper

#group  your data
new_data = df['direction'].groupby(TimeGrouper('10min'))
#apply your function to the grouped data
new_data.apply(directionDescribe)