为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

www说 2021-09-28 18:10:09
我有一个经典的“高开低收”数据类型的数据框,在金融中很常见。每行为 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 的其他问题,但似乎没有一个涵盖这种情况。另外,手册页似乎没有就如何解决这一点。
查看完整描述

1 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

我想你需要 pd.Grouper


data_DF = data_DF.groupby(pd.Grouper(freq='5min')).agg({'open':'first',

                                                        'close':'last',

                                                        'high':'max',

                                                        'low':'min'})


                       open   close    high     low

time                                               

2018-12-29 07:30:00  3411.4  3413.9  3413.9  3411.4

2018-12-29 07:35:00  3413.9  3413.1  3416.1  3411.9

2018-12-29 07:40:00  3413.1  3422.9  3427.5  3413.1

2018-12-29 07:45:00  3421.1  3423.8  3431.7  3418.0

2018-12-29 07:50:00  3423.8  3428.2  3428.2  3418.9


查看完整回答
反对 回复 2021-09-28
  • 1 回答
  • 0 关注
  • 421 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号