2017-09-16 228 views
0

目前我的數據的日期爲01JAN2017,我如何讓熊貓理解爲日期類型,我需要數據以日期類型過濾它的各種時間範圍。 我用下面的日期類型的解析日期爲DDMMMYYYY

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

但是當我檢查的數據類型爲一週仍顯示爲對象。

將是非常有益的,如果你也可以告訴我一些其他鏈接,這樣我可以閱讀了更多有關此

+1

提示:'datetime.strptime'。 – tadman

回答

2

您可以使用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個日期列的龐大數據? –

0

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