将datetype的日期解析为DDMMMYYYY

时间:2017-09-16 21:17:18

标签: python pandas datetime strptime

目前我的数据的日期为01JAN2017,如何让pandas将其理解为日期类型,我需要数据为日期类型,以便在不同的时间范围内对其进行过滤。 我用下面的

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

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

如果您也可以将我引导到其他链接以便我可以阅读更多有关此内容的信息,那将会非常有用

2 个答案:

答案 0 :(得分:2)

您可以使用datetime.strptime()将日期字符串解析为datetime对象:

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

现在,为了让pandas能够识别格式,您可以添加日期解析器功能:

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)

答案 1 :(得分:0)

pandas to_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