1. 程式人生 > >python時間處理(三)pandas.to_datetime

python時間處理(三)pandas.to_datetime

前兩篇內容講了兩個單獨的python庫函式,今天帶大家認識一個常用的工具,pandas.to_datetime(),它是pandas庫的一個方法,pandas庫想必大家非常熟悉了,這裡不再多說。這個方法的實用性在於,當需要批量處理時間資料時,無疑是最好用的。

首先看一下它的主要幾個引數,官方文件在本文最後給出

pandas.to_datetimeargerrors ='raise'utc = Noneformat = Noneunit = 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