熊猫 - OHLC的多个股票Groupby

时间:2017-12-04 15:40:11

标签: python-2.7 pandas pandas-groupby resampling

我有以下格式的.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列,我可以

1 个答案:

答案 0 :(得分:0)

不是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