将带有奇数时间戳的数据帧转换为带有pandas的时间序列

时间:2014-07-27 19:08:25

标签: python pandas

如何将以下数据帧转换为带有pandas的时间序列?

    Date                                Open    High    Low     Close
0   25/07/14 09 h 31 min 00 s +02:00    -1      -1      -887    -448
1   25/07/14 09 h 32 min 00 s +02:00    -425    -385    -455    -414
2   25/07/14 09 h 33 min 00 s +02:00    -432    -432    -654    -601

1 个答案:

答案 0 :(得分:0)

从这开始:

>>> ts
0    25/07/14 09 h 31 min 00 s +02:00
1    25/07/14 09 h 32 min 00 s +02:00
2    25/07/14 09 h 33 min 00 s +02:00
dtype: object

您可以指定日期时间格式,如下所示:

>>> pd.to_datetime(ts, format='%d/%m/%y %H h %M min %S s +02:00')
0   2014-07-25 09:31:00
1   2014-07-25 09:32:00
2   2014-07-25 09:33:00
dtype: datetime64[ns]

如果+2:00表示偏移2小时,则:

>>> _ + np.timedelta64(2, 'h')
0   2014-07-25 11:31:00
1   2014-07-25 11:32:00
2   2014-07-25 11:33:00
dtype: datetime64[ns]

当然,如果+02:00具有不同的含义或未修复,则需要更多的字符串操作。

或者,您可以将+02:00转换为UTC偏移格式并使用'%z'指令进行解析:

>>> ts = ts.str.replace(r'(\d\d):(\d\d)$', r'\1\2')
>>> ts
0    25/07/14 09 h 31 min 00 s +0200
1    25/07/14 09 h 32 min 00 s +0200
2    25/07/14 09 h 33 min 00 s +0200
dtype: object
>>> ts.map(lambda t: dt.datetime.strptime(t, '%d/%m/%y %H h %M min %S s %z'))
0    2014-07-25 09:31:00+02:00
1    2014-07-25 09:32:00+02:00
2    2014-07-25 09:33:00+02:00
dtype: object