pandas数据帧组由不均匀的时间戳组成

时间:2014-03-05 20:27:44

标签: python pandas

我有市场价格的数据框,时间戳以微秒为单位,例如

Time       Bid
0  2014-03-03 23:30:30.224323  0.892500
1  2014-03-03 23:30:30.224390  0.892525
2  2014-03-03 23:30:30.224408  0.892525
3  2014-03-03 23:30:30.364299  0.892525
4  2014-03-03 23:30:31.022652  0.892500
5  2014-03-03 23:30:31.022702  0.892525
6  2014-03-03 23:30:31.866949  0.892525
7  2014-03-03 23:30:33.366843  0.892525
8  2014-03-03 23:30:33.858239  0.892525
9  2014-03-03 23:30:34.360997  0.892525
10 2014-03-03 23:30:35.034307  0.892525
11 2014-03-03 23:30:36.110848  0.892525
12 2014-03-03 23:30:36.359973  0.892525
13 2014-03-03 23:30:38.111191  0.892525
14 2014-03-03 23:30:41.599924  0.892525
15 2014-03-03 23:30:41.599972  0.892500

如何通过剥离微秒来按时间分组,例如, 如何转换均匀时隙(1分钟,5分钟,1小时等)的OHLC(开放,高,低,近)结构,并计算每个时隙?我尝试用

添加另一个列
e['Time2'] = pd.to_datetime(e.Time, format='%Y/%m/%d %H:%M:%S')

删除%f,但Time2列看起来与时间列相同。

非常感谢,

如何将其转换为类似

的内容

1 个答案:

答案 0 :(得分:3)

您需要将日期时间设为索引,以便重新取样:

In [11]: df = df.set_index('Time')

In [12]: df.resample('5min', how='ohlc')
Out[12]:
                        Bid
                       open      high     low   close
Time
2014-03-03 23:30:00  0.8925  0.892525  0.8925  0.8925

注意:遗憾的是to_datetime如果失败则不会引发(至少默认情况下),因此通常最好检查列的dtype是datetime64 ... < / p>