【问题标题】:Python: transform float into datetime timestampPython:将浮点数转换为日期时间时间戳
【发布时间】:2019-02-17 00:51:20
【问题描述】:

如何转换以下浮点数:

9.3125

对应于时间,转换为适当的 Pandas 时间戳,例如:

Timestamp('2017-11-13 10:00:00')

浮点数与上面的示例时间戳属于同一天、同一月和同一年。我一直在尝试这个:

from datetime import datetime
datetime.fromtimestamp(9.3125).strftime('%Y-%m-%d %H')

但这会返回:

OSError: [Errno 22] Invalid argument

【问题讨论】:

    标签: python pandas datetime timestamp


    【解决方案1】:

    我相信需要Timedelta.ceil:

    num = 9.3125
    a = pd.Timestamp('2017-11-13')  + pd.to_timedelta(num, unit='H').ceil('H')
    print (a)
    2017-11-13 10:00:00
    

    【讨论】:

    • 但是 9.3125 对应于大约 09:19,所以这个解决方案会让我失去这 19 分钟
    • 如果我使用 float(num) 而不是 int(num) 我得到:ValueError: time data '2017-11-13 9.3125' doesn't match format specified
    【解决方案2】:

    受上述答案的启发,我已验证以下内容对我有用:

    num = 9.3125
    a = pd.Timestamp('2017-11-13')  + pd.to_timedelta(num, unit='H').ceil('min')
    print (a)
    Timestamp('2017-11-13 09:19:00')
    

    【讨论】:

      猜你喜欢
      • 2020-08-03
      • 1970-01-01
      • 2019-02-03
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多