【问题标题】:Python Pandas , Date '9999dec31'dPython Pandas,日期 '9999dec31'd
【发布时间】:2018-03-05 01:51:28
【问题描述】:

我正在做一些非常简单的事情,但它似乎不起作用。我正在将 SAS 表导入熊猫的数据框中。对于日期列。我有 NA,它实际上使用 '9999dec31'd 来表示它,它的数值为 2936547。 Python Pandas.read_sas() 不能使用这个值,因为它太大了。有什么解决方法吗?

谢谢,

【问题讨论】:

  • 运行read_sas 时究竟会发生什么?有错误信息吗?

标签: python pandas sas


【解决方案1】:

我遇到了同样的错误,但使用的是 SQL 服务器数据,而不是 SAS。我相信 Python Pandas 可能会尝试将其存储为 pandas 日期时间,它以纳秒为单位存储其值。如您所料,9999DEC31 的纳秒数太多,无法处理。您可以尝试将其读取为自 SAS 纪元以来的整数天或字符串,并使用 datetime 模块 (datetime.date) 来存储它。或者分别读取年、月、日并使用类 datetime.date(year,month,day) 重新组合。任何让你悲伤最少的事情。我可以确认 datetime.date 可以处理 9999DEC31。

因为 datetime.date 不是 Pandas 的原生类,Pandas 会将您的列存储为 dtype “object”。但不要害怕,如果你做得对,每个元素都会是 datetime.date。

请注意:如果您需要在 Pandas 中使用这些 datetime.dates,则必须使用 datetime 中提供的方法和对象,这与 pandas.datetime 不同。

我希望这会有所帮助。如果您需要更多信息,请告诉我。

【讨论】:

    猜你喜欢
    • 2022-12-04
    • 2022-06-12
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 2015-08-19
    • 2018-09-04
    • 2019-03-01
    相关资源
    最近更新 更多