轉載自:https://www.jianshu.com/p/26c48361ed24
有時,我們需要對日期進行簡單的運算,這就要使用到了日期運算和轉換的函數。
例如:
源數據
其中使用pd.to_datetime可以統一將time.strftime("%Y/%m/%d")生成的日期轉換成日期格式的數據。time.strftime("%Y/%m/%d")生成的日期為字符串格式。
一、計算兩組時間之間的間隔
在圖中有兩列的日期,我們可以直接求出它們之間的間隔,在計算之前要先確定一下日期列的數據是否是日期格式:
數據格式
確定了都是日期格式就可以進行日期的計算:
日期的計算
計算後的日期天數
由上圖可知,計算後的日期天數卻有著一個days單位,這個 因為這個是屬於timedelta64[ns]的數據屬性:
計算後的數據屬性
因此我們可以將其轉換成整數,以方便我們後續的使用:
將數據類型轉換成整數型
使用pd.to_numeric可以將其它形式的數據轉換成整數型的數據。
我們在看看現在數據的類型:
轉換後的數據類型
當然了,也可以使用函數來進行轉換:
用匿名函數轉換成整數型
使用匿名函數的時候對每個元素使用一次.days就能將數據轉換成整數。
timedelta的數據類型相互直接不能轉換成年、周、月等,只能轉換為天數、秒數、微妙數。而且在返回秒數和微笑數時,如果是負數時容易出錯(例如:-3秒會被處理為-1天86397秒):
源數據
在兩個日期直接進行計算之後:
計算之後的數據
所以在日期計算之後為負數的時候就會出錯,因此在轉換間隔秒數的時候最後使用total_seconds()函數(記得函數後面的括號):
使用total_seconds()函數