處理數(shù)據(jù)的時(shí)候遇到一個(gè)問題,從數(shù)據(jù)庫里導(dǎo)出的數(shù)據(jù)是時(shí)分秒的格式:hh:mm:ss ,現(xiàn)在我需要把它轉(zhuǎn)換成秒,方便計(jì)算。
原數(shù)據(jù)可能分兩種情況,字段有可能是文本字符串類型的,也有可能是時(shí)間類型,他們的處理方法不一樣,所以我們分開討論。
1、字符串類型轉(zhuǎn)換成秒
可以將其用 ‘:' 分隔開,分別得出時(shí)、分、秒,即可計(jì)算出秒數(shù)。所以我們定義如下函數(shù):
def str2sec(x): ''' 字符串時(shí)分秒轉(zhuǎn)換成秒 ''' h, m, s = x.strip().split(':') #.split()函數(shù)將其通過':'分隔開,.strip()函數(shù)用來除去空格 return int(h)*3600 + int(m)*60 + int(s) #int()函數(shù)轉(zhuǎn)換成整數(shù)運(yùn)算
2、時(shí)間類型轉(zhuǎn)換成秒
本身如果是時(shí)間類型的格式,我們可以很方便的使用 python 內(nèi)置的 datetime 模塊解決問題,我們可以定義以下函數(shù):
def time2sec(y): ''' 時(shí)間類型時(shí)分秒轉(zhuǎn)換成秒 ''' h = y.hour #直接用datetime.time模塊內(nèi)置的方法,得到時(shí)、分、秒 m = y.minute s = y.second return int(h)*3600 + int(m)*60 + int(s) #int()函數(shù)轉(zhuǎn)換成整數(shù)運(yùn)算
首先我們導(dǎo)入數(shù)據(jù):
import pandas as pddata = pd.read_excel(r"C:/Users/chih-cheng/Desktop/data.xlsx")#導(dǎo)入數(shù)據(jù)data.dtypes#查看數(shù)據(jù)類型
運(yùn)行結(jié)果:
結(jié)果發(fā)現(xiàn)“工作總時(shí)長”字段并不是字符串類型,所以我們使用第二個(gè)定義的函數(shù)即可解決問題,代碼如下:
data['工作總時(shí)長'] = data['工作總時(shí)長'].apply(time2sec)#直接將定義好的 time2sec()函數(shù)作用于元素即可print(data)
結(jié)果如下:
大功告成。
以上這篇python將時(shí)分秒轉(zhuǎn)換成秒的實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林網(wǎng)之家。
新聞熱點(diǎn)
疑難解答
圖片精選