Python 在聚合函数中创建多个列

Python 在聚合函数中创建多个列,python,pandas,time-series,Python,Pandas,Time Series,我想在像内置的ohlc方法一样对熊猫数据帧重新采样时创建多个列 def mhl(data): return pandas.Series([np.mean(data),np.max(data),np.min(data)],index = ['mean','high','low']) ts.resample('30Min',how=mhl) 死于 Exception: Must produce aggregated value 有什么建议吗?谢谢 您可以将函数字典传递给重采样方法: I

我想在像内置的ohlc方法一样对熊猫数据帧重新采样时创建多个列

def mhl(data):
    return pandas.Series([np.mean(data),np.max(data),np.min(data)],index = ['mean','high','low'])

ts.resample('30Min',how=mhl)
死于

Exception: Must produce aggregated value

有什么建议吗?谢谢

您可以将函数字典传递给
重采样
方法:

In [35]: ts
Out[35]:
2013-01-01 00:00:00     0
2013-01-01 00:15:00     1
2013-01-01 00:30:00     2
2013-01-01 00:45:00     3
2013-01-01 01:00:00     4
2013-01-01 01:15:00     5
...
2013-01-01 23:00:00    92
2013-01-01 23:15:00    93
2013-01-01 23:30:00    94
2013-01-01 23:45:00    95
2013-01-02 00:00:00    96
Freq: 15T, Length: 97
创建函数字典:

mhl = {'m':np.mean, 'h':np.max, 'l':np.min}
将字典传递到
重采样的
how
参数:

In [36]: ts.resample("30Min", how=mhl)
Out[36]:
                      h     m   l
2013-01-01 00:00:00   1   0.5   0
2013-01-01 00:30:00   3   2.5   2
2013-01-01 01:00:00   5   4.5   4
2013-01-01 01:30:00   7   6.5   6
2013-01-01 02:00:00   9   8.5   8
2013-01-01 02:30:00  11  10.5  10
2013-01-01 03:00:00  13  12.5  12
2013-01-01 03:30:00  15  14.5  14

使用
“mean”
比使用
np.mean
快10倍左右。
'min'和'max'
是否有办法为大多数列指定默认值(例如,
sum
而不是
mean
),然后覆盖单个列的方法?巧妙的技巧:您甚至可以传递函数字典的字典(对于列),如:
mhl={'data\u column\u 1':{'resultA':np.mean,'resultB':max},'data_column_2':{'resultC':min,'resultD':sum}