我的源数据有一个包含日期信息的列,但它是一个字符串类型。 典型的线条是这样的:
04 13, 2013
07 1, 2012
我正在尝试转换为日期格式,因此我使用了panda的to_datetime
函数:
df['ReviewDate_formated'] = pd.to_datetime(df['ReviewDate'],format='%mm%d, %yyyy')
但我收到此错误消息:
ValueError: time data '04 13, 2013' does not match format '%mm%d, %yyyy' (match)
我的问题是:
如何转换为日期格式?
我还想提取到月份,年份和日期列,因为我需要做一个月比较的月份?但这里的问题是字符串的长度各不相同。
答案 0 :(得分:0)
您的格式字符串不正确,您需要'%m %d, %Y'
,有reference显示有效格式标识符:
In [30]:
import io
import pandas as pd
t="""ReviewDate
04 13, 2013
07 1, 2012"""
df = pd.read_csv(io.StringIO(t), sep=';')
df
Out[30]:
ReviewDate
0 04 13, 2013
1 07 1, 2012
In [31]:
pd.to_datetime(df['ReviewDate'], format='%m %d, %Y')
Out[31]:
0 2013-04-13
1 2012-07-01
Name: ReviewDate, dtype: datetime64[ns]
要回答第二部分,一旦dtype为datetime64
,您就可以调用向量化的dt
访问者方法来获取day
,month
和{ {1}}部分:
year