【问题标题】:Python shows me an Error (Out of Bounds) when running the DateTimePython 在运行 DateTime 时向我显示错误(超出范围)
【发布时间】:2020-03-25 09:23:38
【问题描述】:

我正在尝试将“签入”和“签出”列更改为日期时间。 当我运行下面的代码时,我收到错误消息“超出范围纳秒”(也附上图片)。谁能帮帮我,请问我该如何解决这个问题?

提前谢谢你!

expedia2013_2014["srch_co"] = pd.to_datetime(expedia2013_2014["srch_co"])   
expedia2013_2014["srch_ci"] = pd.to_datetime(expedia2013_2014["srch_ci"])    

【问题讨论】:

  • 不要将代码发布为图片

标签: python pandas date


【解决方案1】:

Timestamp 类型的变量可以保存范围(1677、2262)范围内的大致日期。 您尝试从 2557 年转换日期,因此它超出了范围。 您必须使用其他日期格式。

一种可能的选择:如果您将源日期作为字符串, 例如src='2557-08-17',你可以运行:

result = datetime.datetime.strptime(src, '%Y-%m-%d')

如果你有一个 DataFrame 的源列名为 Dat(作为字符串),你可以 转换它运行:

df.Dat = df.Dat.apply(lambda x: datetime.datetime.strptime(x, '%Y-%m-%d').date())

当你打印 df 时,它的打印方式是一样的,但是当你阅读它时 调用df.loc[some_index,'Dat'],结果将是 datetime.date(2557, 8, 17).

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多