使用 resample 为 Pandas 数据框中的不同列聚合具有不同规则的数据

我有一个经典的“高开低收”数据类型的数据框,在金融中很常见。每行为 1 分钟。720 行。我用 Kraken 的这个代码收集它:


import urllib.request, json 


with urllib.request.urlopen("https://api.kraken.com/0/public/OHLC?pair=XXBTZEUR&interval=1") as url:

    data = json.loads(url.read().decode())


columns=['time', 'open', 'high', 'low', 'close', 'vwap', 'volume', 'ount']

data_DF=pd.DataFrame(data['result']['XXBTZEUR'],columns=columns)

data_DF['open']=data_DF['open'].astype(float)

data_DF['high']=data_DF['high'].astype(float)

data_DF['low']=data_DF['low'].astype(float)

data_DF['close']=data_DF['close'].astype(float)

data_DF['volume']=data_DF['volume'].astype(float)

data_DF['vwap']=data_DF['vwap'].astype(float)

data_DF['ount']=data_DF['ount'].astype(int)

data_DF['time']=pd.to_datetime(data_DF['time'],unit='s')

data_DF.set_index('time',inplace=True)

我现在需要将它汇总到不同的时间段。为了简单起见,让我们假设只有经典的 5 分钟。每列必须根据不同的规则生成:

开列必须是样本开列值的第一个错误;

关闭列必须是样本关闭列值的最后一个值;

high 必须是样本的 high 列值的最大值;

低必须是样本低列值的最小值;


我试过


data_DF5=data_DF['vwap'].resample('5Min').OHLC()

但它为每列创建了一系列开盘高低收盘价。嗯,不是我要找的。


我试过:


data_DF5=data_DF['time'].resample('5Min')

data_DF5['volume']=data_DF['volume'].resample('5Min').sum()

data_DF5['open']=data_DF['open'].resample('5Min').first()

data_DF5['close']=data_DF['close'].resample('5Min').last()

data_DF5['high']=data_DF['high'].resample('5Min').max()

data_DF5['low']=data_DF['low'].resample('5Min').min()

旨在一次构建一列数据框。


我得到一个


“无法打开‘hashtable_class_helper.pxi’:找不到文件”错误,我无法理解。如果我改变第一行


data_DF5=data_DF['vwap'].resample('5Min').mean()

我得到了一个我什至无法解释的数据框 [参见 (*)]。


如果我改变第一行


data_DF5=data_DF['vwap'].resample('5Min')

我得到:


'DatetimeIndexResampler' 对象不支持项目分配。


我真的很茫然。我一直在寻找 stackoverflow 的其他问题,但似乎没有一个涵盖这种情况。另外,手册页似乎没有就如何解决这一点。


www说
浏览 422回答 1
1回答

largeQ

我想你需要 pd.Grouperdata_DF = data_DF.groupby(pd.Grouper(freq='5min')).agg({'open':'first',                                                        'close':'last',                                                        'high':'max',                                                        'low':'min'})                       open   close    high     lowtime                                               2018-12-29 07:30:00  3411.4  3413.9  3413.9  3411.42018-12-29 07:35:00  3413.9  3413.1  3416.1  3411.92018-12-29 07:40:00  3413.1  3422.9  3427.5  3413.12018-12-29 07:45:00  3421.1  3423.8  3431.7  3418.02018-12-29 07:50:00  3423.8  3428.2  3428.2  3418.9
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python