在前面的文章中,我們總結(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ù):
由于日期列都是datetime64格式的,當(dāng)導(dǎo)出到excel或者別的地方的時(shí)候就會(huì)出現(xiàn)格式不是我們想要的:
這種在導(dǎo)出后還要再次進(jìn)行格式的調(diào)整携龟,將會(huì)變得很麻煩兔跌。
所以我們要看一下有沒(méi)有其它的方式導(dǎo)出之后就直接是標(biāo)準(zhǔn)的日期格式的。
一峡蟋、日期格式設(shè)置:dt.strftme()
需要注意的是在經(jīng)過(guò).dt.strftime()處理后的數(shù)據(jù)就不再是datetime類型了坟桅,就算導(dǎo)出到excel也是不能直接被識(shí)別為日期的,所以處理的時(shí)候要慎重蕊蝗。
當(dāng)然仅乓,還可以處理成其它的格式:
還有設(shè)置格式更簡(jiǎn)潔的方式:
只要記住大寫Y和小寫y區(qū)別蓬戚,其它的就都比較簡(jiǎn)單了夸楣。dt.strftime()與Datetime庫(kù)里的格式設(shè)置不一樣,這一點(diǎn)要注意區(qū)別子漩。
二豫喧、 提取時(shí)間日期中的 部分信息:
dt.year能直接提取出年份,而且是整數(shù)型:
其它信息和年份差不多:
還可以返回星期幾:(星期一是0痛单,星期天是6嘿棘,跟切片的時(shí)候很相似劲腿。)
返回周數(shù)是df.week()旭绒。
這就聯(lián)想到前面的文章提到的timedelta類型提取日期,那這個(gè)dt能不能用在timedelta類型的數(shù)據(jù)上呢焦人?
由上圖可知以這樣的一直方式比匿名函數(shù)更加的方便挥吵,這里的.days很類似datetime庫(kù)里面的.days。相當(dāng)于用.dt.days代替了之前的map(lambda x:x.days)花椭。
按照這個(gè)邏輯忽匈,.dt.total_seconds()也是可以使用的:
三、計(jì)算天數(shù)相關(guān)的函數(shù)
計(jì)算是一年當(dāng)中的第幾天:
同理計(jì)算一年當(dāng)中的第幾周(.dt.weekofyear):
除了上面這些矿辽,還有.dt后面還可以接很多函數(shù)丹允,實(shí)在太多,就不一一介紹了袋倔。
需要注意的是用split出來(lái)后的是obj格式雕蔽,應(yīng)該先使用datetime.strptime轉(zhuǎn)為時(shí)間格式之后才能進(jìn)行dt.strftime處理。