将熊猫数据框中的对象列转换为日期时间

时间:2018-08-17 15:41:26

标签: python pandas datetime

我在熊猫数据框中有一个对象列,其格式为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,但看不到它。

1 个答案:

答案 0 :(得分: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]