python将str转换为timedelta

时间:2016-06-03 10:15:01

标签: python datetime timedelta

我想将格式为str的时间偏移转换为datetime.timedelta个对象,然后绘制观察曲线与时间的关系。

'5 days, 4:23:52.480000'  ;      17.647166
'5 days, 5:56:09.166000' ;        22.916071
'5 days, 8:21:40.261000'  ;      18.922329
'5 days, 9:53:18.070000'    ;    21.392157
'6 days, 0:07:54.487000'  ;      20.275597

2 个答案:

答案 0 :(得分:0)

timedeltas没有解析器。所以你必须自己建立一个:

import re
delta = '5 days, 4:23:52.480000' 
days, hours, minutes, seconds = re.match('(?:(\d+) days, )?(\d+):(\d+):([.\d+]+)', delta).groups()
total_seconds = ((int(days or 0) * 24 + int(hours)) * 60 + int(minutes)) * 60 + float(seconds)

答案 1 :(得分:0)

虽然我不知道将文本解析为timedelta的任何内容,但pandas.Timedelta构造函数会理解您指定的格式,因此如果您愿意,可以使用它来构建你的timedeltas:

import pandas as pd
import matplotlib.pyplot as plt

x = [['5 days, 4:23:52.480000', 17.647166],
     ['5 days, 5:56:09.166000', 22.916071],
     ['5 days, 8:21:40.261000', 18.922329],
     ['5 days, 9:53:18.070000', 21.392157],
     ['6 days, 0:07:54.487000', 20.275597]]

df = pd.DataFrame(x, columns=['TimeOffset', 'Value'])

df['TimeOffset'] = df['TimeOffset'].apply(pd.Timedelta)

plt.plot(df['TimeOffset'], df['Value'])
plt.show()

更了解熊猫的人,可以随意编辑这个答案(并删除此信息) - 我觉得我构建pd.Timedelta列的方式可能是非惯用的。