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