29、pandas的時(shí)間日期高效操作

在前面的文章中,我們總結(jié)了一下關(guān)于時(shí)間日期的簡(jiǎn)單計(jì)算,但是我們發(fā)現(xiàn)很多功能都是datetime庫(kù)提供的,那么pandas有沒(méi)有提供跟日期時(shí)間有關(guān)的函數(shù)呢?

自然是有的就是.dt,跟.str一樣,后面可以加多個(gè)函數(shù)進(jìn)行操作。

比如現(xiàn)在有一組數(shù)據(jù):

源數(shù)據(jù)

由于日期列都是datetime64格式的,當(dāng)導(dǎo)出到excel或者別的地方的時(shí)候就會(huì)出現(xiàn)格式不是我們想要的:

導(dǎo)出之后的日期格式

這種在導(dǎo)出后還要再次進(jìn)行格式的調(diào)整,將會(huì)變得很麻煩。

所以我們要看一下有沒(méi)有其它的方式導(dǎo)出之后就直接是標(biāo)準(zhǔn)的日期格式的。

一、日期格式設(shè)置:dt.strftme()

dt.strftme()

需要注意的是在經(jīng)過(guò).dt.strftime()處理后的數(shù)據(jù)就不再是datetime類(lèi)型了,就算導(dǎo)出到excel也是不能直接被識(shí)別為日期的,所以處理的時(shí)候要慎重。

當(dāng)然,還可以處理成其它的格式:

小寫(xiě)的y,年份就只有兩位
. 不要中間的‘-’
中間用斜線
將年份放后面
只顯示月份和天數(shù)

還有設(shè)置格式更簡(jiǎn)潔的方式:

dt.date只提取日期部分

只要記住大寫(xiě)Y和小寫(xiě)y區(qū)別,其它的就都比較簡(jiǎn)單了。dt.strftime()與Datetime庫(kù)里的格式設(shè)置不一樣,這一點(diǎn)要注意區(qū)別。

二、 提取時(shí)間日期中的 部分信息:

dt.year能直接提取出年份,而且是整數(shù)型:

dt.year能直接提取出年份

其它信息和年份差不多:

月份
小時(shí)
時(shí)間
季度

還可以返回星期幾:(星期一是0,星期天是6,跟切片的時(shí)候很相似。)

返回星期時(shí)間

返回周數(shù)是df.week()。

這就聯(lián)想到前面的文章提到的timedelta類(lèi)型提取日期,那這個(gè)dt能不能用在timedelta類(lèi)型的數(shù)據(jù)上呢?

timedelta函數(shù)
使用.dt.days去掉days

由上圖可知以這樣的一直方式比匿名函數(shù)更加的方便,這里的.days很類(lèi)似datetime庫(kù)里面的.days。相當(dāng)于用.dt.days代替了之前的map(lambda x:x.days)。

按照這個(gè)邏輯,.dt.total_seconds()也是可以使用的:

.dt.total_seconds()


三、計(jì)算天數(shù)相關(guān)的函數(shù)

計(jì)算是一年當(dāng)中的第幾天:

計(jì)算是一年當(dāng)中的第幾天

同理計(jì)算一年當(dāng)中的第幾周(.dt.weekofyear):

計(jì)算一年當(dāng)中的第幾周

除了上面這些,還有.dt后面還可以接很多函數(shù),實(shí)在太多,就不一一介紹了。

需要注意的是用split出來(lái)后的是obj格式,應(yīng)該先使用datetime.strptime轉(zhuǎn)為時(shí)間格式之后才能進(jìn)行dt.strftime處理。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容