日期类型的解析日期为DDMMMYYYY

问题描述:

目前我的数据的日期为01JAN2017,我如何让熊猫理解为日期类型,我需要数据以日期类型过滤它的各种时间范围。 我用下面的日期类型的解析日期为DDMMMYYYY

data=pd.read_csv(input_path + 'data.txt',sep='|', parse_dates=['week']) 

但是当我检查的数据类型为一周仍显示为对象。

将是非常有益的,如果你也可以告诉我一些其他链接,这样我可以阅读了更多有关此

+1

提示:'datetime.strptime'。 – tadman

您可以使用datetime.strptime()剖析的日期字符串转换为datetime对象:

>>> from datetime import datetime 
>>> datetime.strptime("01JAN2017", "%d%b%Y") 
>>> datetime.datetime(2017, 1, 1, 0, 0) 

现在,为了使大熊猫识别的格式,你可以添加日期分析器功能:

dateparse = lambda dates: [pd.datetime.strptime(d, "%d%b%Y") for d in dates] 
df = pd.read_csv(infile, parse_dates=["week"], date_parser=dateparse) 
+0

这将增加我的运行时间,因为我将使用3个日期列的庞大数据? –

pandasto_datetime方法是自然的选择

In [11]: D = {'Date': '01JAN2017'} 
In [12]: df = pd.DataFrame(D, index=[0]) 
In [13]: df 
Out[13]: 
     Date 
0 01JAN2017 
In [14]: df.dtypes 
Out[14]: 
Date object 
dtype: object 

# Datatime column is read as string 
# use to_datetime to convert non-standard datetime values  

In [15]: df['Date'] = pd.to_datetime(df.Date, format='%d%b%Y') 
In [16]: df.dtypes 
Out[16]: 
Date datetime64[ns] 
dtype: object 
In [17]: df['Date'] 
Out[17]: 
0 2017-01-01 
Name: Date, dtype: datetime64[ns] 

pd.read_csv该文档确实建议您使用to_datetime当日期时间格式不是一个标准格式:

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

如果某列或索引包含一个不可解析的日期,整个列或索引将作为对象数据类型不变地返回。对于非标准的日期时间解析,请在pd.read_csv后使用pd.to_datetime