【问题标题】:Converting object column in pandas dataframe to datetime将熊猫数据框中的对象列转换为日期时间
【发布时间】:2019-01-24 16:47:00
【问题描述】:

我在 pandas 数据框中有一个 dd/mm/yyyy 格式的对象列,我想用 to_datetime 进行转换。

我尝试使用以下方法将其转换为日期时间:

df['Time stamp'] = pd.to_datetime(df['Time stamp'], format= '%d/%m/%Y')

我收到以下错误:

TypeError: Unrecognized value type: <class 'str'>
ValueError: unconverted data remains:  

这是否意味着某处有一个空白行,我检查了原始 csv,但我看不到。

【问题讨论】:

标签: python pandas datetime


【解决方案1】:

这意味着你有一个额外的空间。虽然pd.to_datetime 非常擅长在不指定任何格式的情况下正常解析日期,但当您实际指定格式时,它必须完全匹配。

您可以通过添加 .str.strip() 在转换前删除多余的空格来解决您的问题。

import pandas as pd
df['Time stamp'] = pd.to_datetime(df['Time stamp'].str.strip(), format='%d/%m/%Y')

或者,您可以通过使用 dayfirst=True 参数来利用它解析各种日期格式的能力

df['Time stamp'] = pd.to_datetime(df['Time stamp'], dayfirst=True)

示例:

import pandas as pd
df = pd.DataFrame({'Time stamp': ['01/02/1988', '01/02/1988 ']})

pd.to_datetime(df['Time stamp'], format= '%d/%m/%Y')

ValueError:未转换的数据仍然存在:

pd.to_datetime(df['Time stamp'].str.strip(), format='%d/%m/%Y')
#0   1988-02-01
#1   1988-02-01
#Name: Time stamp, dtype: datetime64[ns]

pd.to_datetime(df['Time stamp'], dayfirst=True)
#0   1988-02-01
#1   1988-02-01
#Name: Time stamp, dtype: datetime64[ns]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 2020-03-14
    • 2018-12-08
    • 2019-03-24
    相关资源
    最近更新 更多