【问题标题】:Pandas - Multiple Stocks Groupby for OHLCPandas - 用于 OHLC 的多股 Groupby
【发布时间】:2018-05-18 03:03:08
【问题描述】:

我有一个以下格式的 .csv 文件。没有标题,我只是为了理解而写

time,stockname,price

09:00:00, ABC, 100
09:00:00, XYZ, 500
09:01:00, ABC, 101
09:01:00, XYZ, 499

然后继续

我想做一些类似 groupby 重采样(15 分钟)价格的事情,这样最终数据框就具有所有股票 OHLC 时间,我可以传递股票名称和时间并获取 OHLC 列,我可以

【问题讨论】:

    标签: python-2.7 pandas pandas-groupby resampling


    【解决方案1】:

    不是 100% 确定你在追求什么——预期的输出会很有用。

    无论如何,pd.Grouper 非常适合按时间间隔对日期时间索引进行分组。在下面的示例中,我生成了一些看起来像您的示例数据的示例数据并进行了一些分组。

    import numpy as np
    import pandas as pd
    
    # generate some data
    some_dates = pd.date_range(start='2017-01-01', periods=10, freq='5min')
    df = pd.DataFrame(index=some_dates)
    df.index.name = 'time'
    df['stock_name'] = ['ABC', 'XYZ'] * 5
    df['price'] = (np.random.rand(10) * 100).round(2)
    
    print(df)
    
    time                   stock_name  price        
    2017-01-01 00:00:00    ABC         5.26
    2017-01-01 00:05:00    XYZ         68.13
    2017-01-01 00:10:00    ABC         91.76
    2017-01-01 00:15:00    XYZ         21.16
    2017-01-01 00:20:00    ABC         75.69
    2017-01-01 00:25:00    XYZ         21.16
    2017-01-01 00:30:00    ABC         80.25
    2017-01-01 00:35:00    XYZ         4.83
    2017-01-01 00:40:00    ABC         10.07
    2017-01-01 00:45:00    XYZ         20.67
    
    # do some grouping: e.g by 15 minute intervals & by stock_name
    df.groupby([pd.Grouper(freq='15min'), df['stock_name']]).max()
    
    time                stock_name price
    2017-01-01 00:00:00 ABC        91.76
    2017-01-01 00:00:00 XYZ        68.13
    2017-01-01 00:15:00 ABC        75.69
    2017-01-01 00:15:00 XYZ        21.16
    2017-01-01 00:30:00 ABC        80.25
    2017-01-01 00:30:00 XYZ        4.83
    2017-01-01 00:45:00 XYZ        20.67
    

    【讨论】:

    • 你会怎么做 ohlc() ? max() 有效,但 ohlc() 无效
    猜你喜欢
    • 2016-07-13
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    相关资源
    最近更新 更多