ValueError:时间数据‘04/19/19 08:46’与格式‘%m/%d/%Y%H:%M’不匹配(匹配)

m3eecexj  于 2022-09-21  发布在  其他
关注(0)|答案(2)|浏览(170)
Order Date

0 04/19 08:46
2 04-07-19 22:30
3 04-12-19 14:38
4 04-12-19 14:38 5 04-30-19 09:27

这是我在DataFrame中的列,列的类型是‘Object’

df.dtypes

订单日期对象

我试图用下面的代码将其转换为日期时间,但遇到错误。

df['Order Date']=pd.to_datetime(df['Order Date'], format='%m/%d/%y %H:%M')

我已经尝试了多个选项,但仍然出错

ValueError:时间数据‘04/19/19 08:46’与格式‘%m/%d/%y%H:%M’不匹配(匹配)

请帮帮我!

okxuctiv

okxuctiv1#

无需添加格式,Pandas会自动识别:

df['Order Date'] = pd.to_datetime(df['Order Date'])

或者改用DateTime:

import datetime

df['Date'] = df['Date'].map(lambda x: datetime.datetime.strptime(x, '%m/%d/%y %H:%M'))

如果错误是不可避免的,或者找不到它,或者不知道如何继续,请执行以下操作:


# example df with non datetime value

    Order Date
0   04/19/19 08:46
1   04/07/19 22:30
2   random text

df['Order Date2'] = pd.to_datetime(df['Order Date'], errors='coerce')

df 
    Order Date      Order Date2
0   04/19/19 08:46  2019-04-19 08:46:00
1   04/07/19 22:30  2019-04-07 22:30:00
2   random text     NaT

df.loc[df['Order Date2'].isna()] #isolate the row where error exist
    Order Date  Order Date2
2   random text NaT
ui7jx7zq

ui7jx7zq2#

df['Order Date']=pd.to_datetime(df['Order Date'], format='%m/%d/%y %H:%M')

编辑以反映您的评论:

你试过这么做吗?

df['Order Date']=pd.to_datetime(df['Order Date'])

尝试此操作以打印不符合格式的日期

from datetime import datetime
for date_str in df["Order Date"]:
    try:
        a = datetime.strptime(date_str, '%m/%d/%y %H:%M')
    except ValueError:
        print(date_str)

相关问题