首页 > 解决方案 > 在 python pandas 中将对象转换为日期时间戳。天没有前导零的地方

问题描述

我似乎无法将此数据框列转换为日期时间戳。

Date_Last_Modified
2021 年 1 月 1 日下午 7:36:32 2021 年
1 月 11 日下午 7:36:32... 等

dtype 是一个对象,%e 不起作用,%-d 也不起作用。这是我的命令。

df['Date_Last_Modified'] = pd.to_datetime(df['Date_Last_Modified'], format='%B %d %Y %I:%M:%S %p')

这是错误

ValueError: time data 'Date Last Modified' does not match format '%B %d %Y %I:%M:%S %p' (match)

或者

df['Date_Last_Modified'] = pd.to_datetime(df['Date_Last_Modified'], format='%B %e %Y %I:%M:%S %p')

ValueError: 'e' is a bad directive in format '%B %e %Y %I:%M:%S %p'

标签: pythonpandasdatetime

解决方案


您可以过滤“Date_Last_Modified”列中的错误值,如下所示:

FMT = '%B %d %Y %I:%M:%S %p'
col = 'Date_Last_Modified'
errors_values = (df[pd.to_datetime(df[col], format=FMT, errors='coerce').isna()]).values
df = df[~df[col].apply(lambda x: x in errors_values)]

在此之后,你不应该有同样的错误。

df['Date_Last_Modified'] =  pd.to_datetime(df['Date_Last_Modified'], format='%B %d %Y %I:%M:%S %p')

推荐阅读