将pandas数据框架中的对象列转换为数据时间[英] Converting object column in pandas dataframe to datetime

本文是小编为大家收集整理的关于将pandas数据框架中的对象列转换为数据时间的处理方法,想解了将pandas数据框架中的对象列转换为数据时间的问题怎么解决?将pandas数据框架中的对象列转换为数据时间问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我在pandas dataframe中有一个格式dd/mm/yyyy中的对象列,我想与to_dateethime转换.

我尝试使用以下内容将其转换为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,我看不到一个.

推荐答案

这意味着您有额外的空间.尽管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]

本文地址:https://www.itbaoku.cn/post/1728029.html