python時間處理(三)pandas.to_datetime
阿新 • • 發佈:2018-12-06
前兩篇內容講了兩個單獨的python庫函式,今天帶大家認識一個常用的工具,pandas.to_datetime(),它是pandas庫的一個方法,pandas庫想必大家非常熟悉了,這裡不再多說。這個方法的實用性在於,當需要批量處理時間資料時,無疑是最好用的。
首先看一下它的主要幾個引數,官方文件在本文最後給出
pandas.
to_datetime
(arg,errors ='raise',utc = None,format = None,unit = None )
引數 意義 errors 三種取值,‘ignore’, ‘raise’, ‘coerce’,預設為raise。
'raise',則無效的解析將引發異常
'coerce',那麼無效解析將被設定為NaT
'ignore',那麼無效的解析將返回輸入值
utc
布林值,預設為none。返回utc即協調世界時。 format 格式化顯示時間的格式。 unit 預設值為‘ns’,則將會精確到微妙,‘s'為秒。 官方文件中有幾個簡單的例子,這裡稍微提一下:
1、 df = pd.DataFrame({'year': [2015, 2016], 'month': [2, 3], 'day': [4, 5]}) pd.to_datetime(df) #0 2015-02-04 #1 2016-03-05 #dtype: datetime64[ns] #可以看到將字典形式時間轉換為可讀時間 2、 pd.to_datetime('13000101', format='%Y%m%d', errors='ignore') #datetime.datetime(1300, 1, 1, 0, 0) pd.to_datetime('13000101', format='%Y%m%d', errors='coerce') #NaT #如果日期不符合時間戳限制,則errors ='ignore'將返回原始輸入,而不會報錯。 #errors='coerce'將強制超出NaT的日期,返回NaT。
然而實際中遇到的可能是這樣的資料:
通過pandas.read_csv()或者pandas.read_excel()讀取檔案過後,得到的資料列對應的型別是“object”,這樣沒法對時間資料處理,可以用過pd.to_datetime將該列資料轉換為時間型別,即datetime。
data.dtypes # object data= pd.to_datetime(data) data.dtypes # datetime64[ns]
轉換過後就可以對這些時間資料操作了,可以相減求時間差,計算相差的秒數和天數,呼叫的方法和datetime庫的方法一致,分別是 data.dt.days() 、data.dt.seconds() 、data.dt.total_seconds()。
到這裡就結束了嗎? 不不,還沒有。這裡再教大家通過pandas將時間與時間戳相互轉換,原理是一樣的通過datetime、time庫,技巧是用apply()函式來實現它。
將data的所有時間轉換為時間戳(此時資料型別已經是datetime,是object的報錯不要找我。。)
data = data.apply(lambda x:time.mktime(x.timetuple())) #x.timetuple()將時間轉換為時間元組,提前匯入time模組
將data的所有時間戳轉換為可讀時間:
data = data.apply(lambda x:time.strftime('%Y/%m/%d %H:%M:%S',time.localtime(x))) #程式碼含義為:先讀取時間戳資料,將其轉換為時間元組,在通過格式化時間轉換為可讀的時間格式
結束了結束了。。
最後奉上官方文件:pandas.to_datetime