【问题标题】:How to convert a column with null values to datetime format?如何将具有空值的列转换为日期时间格式?
【发布时间】:2019-03-20 05:23:23
【问题描述】:

如何将 df 转换为 pandas 日期时间数据类型? (带空值)

datet = pd.DataFrame(['2018-09-07 00:00:00','2017-09-15 00:00:00',''],columns=['Mycol'])

datet['Mycol'] = datet['Mycol'].apply(lambda x: 
                                dt.datetime.strptime(x,'%Y-%m-%d %H:%M:%S'))

但它返回错误: ValueError: 时间数据 '' 与格式 '%Y-%m-%d %H:%M:%S' 不匹配

如何解决该错误? (将 null 保留为空白)

谢谢!

【问题讨论】:

  • 您的日期列中有一个空白
  • 是的,我知道。那么如何转移到日期时间并忽略空值?

标签: python pandas datetime type-conversion


【解决方案1】:

只要做:

datet['Mycol'] = pd.to_datetime(datet['Mycol'], errors='coerce')

这会自动将 null 转换为 NaT 值。

输出:

0   2018-09-07
1   2017-09-15
2          NaT

【讨论】:

    【解决方案2】:

    这是因为您的第三列包含一个空字符串。删除它,它的工作原理。它无法将空字符串转换为匹配格式。

    datet = pd.DataFrame(['2018-09-07 00:00:00','2017-09-15 00:00:00'],columns=['Mycol'])
    
    datet['Mycol'] = datet['Mycol'].apply(lambda x: datetime.datetime.strptime(x,'%Y-%m-%d %H:%M:%S'))
    

    【讨论】:

    • 如我所说,我想保留空值,但谢谢!
    • 抱歉,我错过了那条评论 :)
    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 2011-01-10
    • 2023-03-27
    相关资源
    最近更新 更多