【问题标题】:Python giving me datetime Value Error from CSVPython给了我来自CSV的日期时间值错误
【发布时间】:2020-11-27 00:29:53
【问题描述】:

我有一个 Python 文件,它可以帮助我将日期时间数据从服务器提取并组织到 pandas DataFrame 中,然后导出为一个漂亮且可用的 CSV。我的第二个 Python 脚本需要读取 CSV 并分析数据。如果我不触摸导出的 CSV,分析可以读取 CSV 并顺利运行。但是,一旦我尝试将一些 CSV 文件与 Excel/其他电子表格软件合并在一起,就会出现日期时间错误

ValueError("time data %r does not match format %r" %    
ValueError: time data '2019-12-26 23:00' does not match format '%Y-%m-%d  %H:%M:%S'

尽管如此,它是直接复制/粘贴,仍保存为 CSV。任何大师都可以提供一些关于这个问题的见解?

【问题讨论】:

    标签: python-3.x pandas dataframe csv python-datetime


    【解决方案1】:

    很确定这是 Excel 问题,而不是 Python 问题。

    如果您将包含时间戳字符串的 .csv 加载到 Excel 中,Excel 会识别日期时间并对其进行格式化。这种格式似乎默认为MM.DD.YYYY hh:mm(日期部分可能因您的语言环境而异):

    如果您将文件保存在 Excel 中,则 .csv 中的秒数会被删除!

    • 似乎可以可靠地防止这种行为的唯一过程是为各个列设置特定的日期/时间格式,例如DD.MM.YYYY hh:mm:ss。 AFAIK,您必须为每个工作簿手动执行此操作

    • 或者也许写一个宏。在较旧的 Excel 版本中,我有一个 PERSONAL.XLSB。应该仍然适用于较新的版本,你必须把它放在C:\Users\[username]\AppData\Roaming\Microsoft\Excel\XLSTART

    • 你可以使用 .xlsx 格式而不是 .csv,大概你不会在那里丢失格式信息

    【讨论】:

      【解决方案2】:

      我从错误中看到并非所有 CSV 文件都具有相同的时间格式。

      其中一些在[hour:minute],一些在[hour:minute:second]

      ValueError: time data '2019-12-26 23:00' does not match format '%Y-%m-%d  %H:%M:%S'
      

      确保所有 CSV 中的日期时间字段都匹配相同的格式。

      【讨论】:

      • 它们是,因为所有导出都是使用相同格式的相同 python 文件完成的。我认为这与Excel转换字符串有关。一旦我粘贴了一些日期时间,Excel 就会识别出它是一个日期并在内部做一些事情......
      • 我建议将每个日期时间字段转换为 UNIX 时间戳格式。您可以轻松地在 ISO 和 UNIX 之间来回切换(甚至在 Excel 中)。
      • "轻松地在 ISO 和 UNIX 之间来回切换(甚至在 Excel 中)" - 比如 this?这听起来和formatting option 一样痛苦^^
      猜你喜欢
      • 2019-09-25
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多