【问题标题】:How to cast string with AM/PM to timestamp in pandas如何将带有 AM/PM 的字符串转换为 pandas 中的时间戳
【发布时间】:2018-10-02 15:48:42
【问题描述】:

我有这样的行29-08-17 11.34.58.548518 PM, 如何将其转换为 pandas 中的时间戳:

这种方法没用

pd.to_datetime('29-08-17 11.34.58.548518 PM', '%d-%m-%Y %H.%M.%S', dayfirst = True)

【问题讨论】:

  • 是我遗漏了什么,还是你只是换了帖子?

标签: pandas type-conversion timestamp


【解决方案1】:

您可以删除dayfirst,因为该信息包含在您的格式化字符串中。要包含整个日期字符串,包括 .548518 PM,请使用 %f%p 指令:

pd.to_datetime('29-08-17 11.34.58.548518 PM', format='%d-%m-%y %I.%M.%S.%f %p')

返回:

Timestamp('2017-08-29 23:34:58.548518')

%f 代表十进制数的微秒,%p 代表区域设置中的 AM 或 PM(请参阅 docs 了解更多信息)

【讨论】:

  • 29-08-17 11.34.58.548518 PM 转换为 2017-08-29 11:34:58.548518。但是我们有 PM 所以结果应该是2017-08-29 23:34:58.548518
  • 你是对的,你应该使用%I而不是%H(已编辑)
【解决方案2】:

此外,摆脱 PM/AM 也不是一种选择:我们必须正确处理所有事情。最终解决方案:

pd.to_datetime(pd.to_datetime('29-08-17 11.34.58.548518 PM', format='%d-%m-%y %I.%M.%S.%f %p'), format='%d-%m-%y %H.%M.%S')

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 2018-06-12
    • 2017-01-16
    • 2021-10-09
    • 2018-01-21
    • 2020-04-23
    • 2021-09-12
    • 2021-12-29
    • 1970-01-01
    相关资源
    最近更新 更多