栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用python和pandas将OHLC股票数据转换为不同的时间范围

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用python和pandas将OHLC股票数据转换为不同的时间范围

您的方法是正确的,但是失败了,因为应用于agg()的函数dict中的每个函数都接收一个Series对象,该对象反映了与键值匹配的列。因此,不必再次过滤列标签。这样,并假设groupby保留顺序,您可以对Series进行切片以提取Open
/ Close列的first / last元素(注意:groupby文档并未声称保留原始数据系列的顺序,但实际上是这样)。

In [50]: df.groupby(dr5minute.asof).agg({'Low': lambda s: s.min(),         'High': lambda s: s.max(),        'Open': lambda s: s[0],        'Close': lambda s: s[-1],        'Volume': lambda s: s.sum()})Out[50]: Close    High     Low    Open  Volumekey_0          1999-01-04 10:20:00  1.1806  1.1819  1.1801  1.1801      341999-01-04 10:25:00  1.1789  1.1815  1.1776  1.1807      911999-01-04 10:30:00  1.1791  1.1792  1.1776  1.1780      16

作为参考,以下表格总结了基于groupby对象类型的聚合函数的预期输入和输出类型,以及如何将聚合函数传递到agg()。

       agg() method     agg func    agg func          agg()       input type       accepts     returnsresultGroupBy ObjectSeriesGroupBy     function         Series      value  Series       dict-of-funcs    Series      value  Dataframe, columns match dict keys       list-of-funcs    Series      value  Dataframe, columns match func namesDataframeGroupBy  function         Dataframe   Series/dict/ary   Dataframe, columns match original Dataframe       dict-of-funcs    Series      value  Dataframe, columns match dict keys, where dict keys must be columns in original Dataframe       list-of-funcs    Series      value  Dataframe, MultiIndex columns (original cols x func names)

从上表中,如果聚合需要访问多个列,则唯一的选择是将单个函数传递给DataframeGroupBy对象。因此,完成原始任务的另一种方法是定义一个类似如下的函数:

def ohlcsum(df):    df = df.sort()    return {       'Open': df['Open'][0],       'High': df['High'].max(),       'Low': df['Low'].min(),       'Close': df['Close'][-1],       'Volume': df['Volume'].sum()      }

并应用agg():

In [30]: df.groupby(dr5minute.asof).agg(ohlcsum)Out[30]:  Open    High     Low   Close  Volumekey_0          1999-01-04 10:20:00  1.1801  1.1819  1.1801  1.1806      341999-01-04 10:25:00  1.1807  1.1815  1.1776  1.1789      911999-01-04 10:30:00  1.1780  1.1792  1.1776  1.1791      16

尽管熊猫将来可能会提供一些更简洁的内置魔术,但希望这可以解释如何使用当今的agg()功能。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638782.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号