Python 将对象转换为日期时间引发错误

Python 将对象转换为日期时间引发错误,python,pandas,Python,Pandas,由两部分组成的问题 我正在尝试将一列转换为datetime,我认为这是一项简单的任务?正如我以前在不同的df上所做的那样,使用文档没有太多问题 df = pd.DataFrame({'date' : ['24 October 2018', '23 April 2018', '18 January 2018']}) print(df) date 0 24 October 2018 1 23 April 2018 2 18 January 2018 我正在浏览dat

由两部分组成的问题

我正在尝试将一列转换为datetime,我认为这是一项简单的任务?正如我以前在不同的df上所做的那样,使用文档没有太多问题

  df = pd.DataFrame({'date' : ['24 October 2018', '23 April 2018', '18 January 2018']})
    print(df)
    date
0   24 October 2018
1   23 April 2018
2   18 January 2018
我正在浏览datetime文档,我认为这段代码可以将这个列(它是一个对象)转换为datetime

df.date =  pd.to_datetime(df['date'], format="%d-%m-%Y",errors='ignore')
这就产生了错误:

ValueError: time data '24 April 2018' does not match format '%d-%m-%Y' (match)

我尝试过使用公式和浏览文档,但都没有用

您使用了错误的格式<代码>'2018年10月24日'使用
格式=“%d%B%Y”
。将列出格式说明符

编辑:-演示-

>>> import pandas as pd
>>> df = pd.DataFrame({'date':['24 October 2018', '23 April 2018', '18 January 2018']})
>>> df.date = pd.to_datetime(df['date'], format="%d %B %Y")
>>> 
>>> df
        date
0 2018-10-24
1 2018-04-23
2 2018-01-18
>>>
>>> df['date'][0]
Timestamp('2018-10-24 00:00:00')
>>> df['date'][0].month
10
编辑2:第二个问题

>>> df['status'] = ['complete', 'complete', 'requested']
>>> df
        date     status
0 2018-10-24   complete
1 2018-04-23   complete
2 2018-01-18  requested
>>>
>>> df[df['status'] != 'complete']
        date     status
2 2018-01-18  requested

您可以使用
pd.to\u datetime
datetime

import datetime as dt
df['date'].apply(lambda x: dt.datetime.strptime(x,'%d %B %Y'))

时间数据datetime.datetime(2018,5,25,0,0)与格式“%d%B%Y”(匹配)不匹配
引发了此错误。将格式更改为y B d时,我得到了
ValueError:未转换的数据仍然存在:18
@datanovel我不知道您做错了什么,但是
df=pd.DataFrame({'date':['2018年10月24日','2018年4月23日','2018年1月18日']);df.date=pd.to_datetime(df['date'],format=“%d%B%Y”)
绝对有效。谢谢!你是对的,它在演示中起作用,但在我的DF上不起作用,因为DF与datetime完全相同,所以我不确定问题出在哪里。我将尝试上述解决方案。谢谢Timgeb,这对我本身不起作用,但它是正确的解决方案。谢谢,我希望这对其他人有帮助。为了引发错误,您需要省略
errors='ignore'
部分。是的,这是正确的,我最初将其放入以检查我的DF,以查看是否有异常值抛出我的DF。