【问题标题】:Wrong year pd.to_datetime错误的年份 pd.to_datetime
【发布时间】:2020-12-23 09:55:04
【问题描述】:

我有一个数据框,其中的日期像对象一样存储,格式为 2020-01-01 00:00:00+01:00

我想提取年份作为新列:

tp['year'] = pd.to_datetime(tp.datefield).dt.year, utc=True)

(没有utc=True 我得到:ValueError:Tz-aware datetime.datetime 不能转换为 datetime64,除非 utc=True)

但是对于像2020-01-01 00:00:00+01:00 这样的日期,我得到的是 2019 年,而应该是 2020 年。我做错了什么?

【问题讨论】:

    标签: pandas


    【解决方案1】:

    没有错,如果转换成utcget:

    tp['date'] = pd.to_datetime(tp.datefield, utc=True)
    print (tp)
                       datefield                      date
    0  2020-01-01 00:00:00+01:00 2019-12-31 23:00:00+00:00
    

    所以年份是2019

    顺便说一句,熊猫 1.1.1 对我来说是正确的:

    tp['year'] = pd.to_datetime(tp.datefield).dt.year
    print (tp)
    
                       datefield  year
    0  2020-01-01 00:00:00+01:00  2020
    

    【讨论】:

    • 好的,但我希望它是 2020 年。这就是数据在从中读取 SQL 数据的应用程序中的显示方式。也许我可以加一个小时。
    • @BERA - 你的熊猫版本是什么?另外如果不工作tp['year'] = pd.to_datetime(tp.datefield).dt.year 是可能的测试tp['year'] = pd.to_datetime(tp.datefield.astype(str)).dt.year
    • 版本熊猫:0.24.2
    • @BERA - 来自上述评论的锄头工作解决方案?如果没有,可以升级熊猫吗?
    • @BERA - 或tp['year'] = tp.datefield.dt.year
    猜你喜欢
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 2012-12-29
    • 2016-08-10
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多