【问题标题】:python convert str to timedeltapython将str转换为timedelta
【发布时间】:2016-06-03 10:15:01
【问题描述】:

我想将格式为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

【问题讨论】:

  • 欢迎来到 SO,您能否展示您的努力,因为 SO 不是代码编写服务,请展示您想要的情节是什么样的
  • 这看起来你实际上想要timedelta,而不是datetime,对吗?
  • 斜体是的,完全是@Paul

标签: python datetime timedelta


【解决方案1】:

时间增量没有解析器。所以你必须自己建造一个:

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)

【讨论】:

    【解决方案2】:

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

    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()
    

    更了解 pandas 的人,请随时编辑此答案(并删除此消息) - 我觉得我构建 pd.Timedelta 列的方式可能不习惯。

    【讨论】:

      猜你喜欢
      • 2023-02-10
      • 2023-01-05
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 2014-10-28
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多