我想将格式为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
答案 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
列的方式可能是非惯用的。