Python 将对象转换为日期时间引发错误
由两部分组成的问题 我正在尝试将一列转换为datetime,我认为这是一项简单的任务?正如我以前在不同的df上所做的那样,使用文档没有太多问题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
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。