【问题标题】:Pandas won't recognize date while reading csv熊猫在读取 csv 时无法识别日期
【发布时间】:2021-05-09 15:54:11
【问题描述】:

我正在编写一个脚本,该脚本使用 pandas 读取 .csv 文件并填写特定表格。 .csv 文件中的一列是生日列。

在读取 .csv 文件时,我使用 'parse_dates' 对其进行解析以获取日期时间对象,以便我可以根据需要对其进行格式化:

df = pd.read_csv('readfile1.csv',sep=';', parse_dates=['birthday'])

虽然它与 readfile1.csv 完美配合,但它不适用于 readfile2.csv。但是这些文件看起来完全一样。

我得到的错误让我认为通过 pandas 自动解析日期时间不起作用:

print(df.at[i,'birthday'].strftime("%d%m%Y"))
AttributeError: 'str' object has no attribute 'strftime'

在这两种情况下,生日的格式如下:

'1965-05-16T12:00:00.000Z' #from readfile1.csv
'1934-04-06T11:00:00.000Z' #from readfile2.csv

我不知道出了什么问题。我检查了文件的编码,两者都是“UTF-8”。有什么想法吗?

谢谢! 问候

【问题讨论】:

  • 带有 df.info(),你会得到什么类型的列生日?
  • Dtype 是 readfile2 的“对象”。 readfile1: datetime64[ns, UTC]
  • 如果不设置关键字parse_dates,读取csv后转换列,用pd.to_datetime和关键字errors='coerce',会得到什么结果?该列是否有 NaT 值?
  • 我就是这么做的。问题是日期错误。 1077-11-19T12:00:00.000Z 导致:File "pandas\_libs\tslibs\np_datetime.pyx", line 113, in pandas._libs.tslibs.np_datetime.check_dts_bounds pandas._libs.tslibs.np_datetime.OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1077-11-19 12:00:00
  • 太棒了 :) 如果您有多个错误的时间戳,我描述的方法也会很有帮助,因为您可以轻松找到所有单元格(字符串 col,其中 datetime col 是 NaT)。

标签: python pandas string csv datetime


【解决方案1】:

如果不设置关键字parse_dates,则转换后的列 使用 pd.to_datetime 和关键字 errors='coerce' 读取 csv,什么 结果你得到了吗?该列是否具有 NaT 值? – MrFuppes 32 分钟 以前

MrFuppes 对调用 pd.to_datetime 的评论导致成功。列中的一个错误日期是错误的原因。 Lumber Jacks 的提示也有助于确定数据类型!

【讨论】:

    猜你喜欢
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 2020-02-08
    • 2021-08-14
    • 2015-11-14
    相关资源
    最近更新 更多