請(qǐng)問(wèn)Pandas怎么能把類似201001這種月度格式改為2021-01-31這種日期格式
回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書
大家好,我是Python進(jìn)階者。
一、前言
前幾天在Python最強(qiáng)王者交流群【老松鼠】問(wèn)了一道Pandas時(shí)間處理的問(wèn)題,如下圖所示。

二、實(shí)現(xiàn)過(guò)程
一開(kāi)始以為只是每個(gè)數(shù)據(jù)先加個(gè)31后綴,之后日期格式化轉(zhuǎn)換一下應(yīng)該就可以了,后來(lái)發(fā)現(xiàn)每個(gè)月天數(shù)不一樣,不可以一概而論,后來(lái)才知道,原來(lái)有現(xiàn)成的函數(shù)。

這里【瑜亮老師】給了兩個(gè)方法,一起來(lái)學(xué)習(xí)下吧!
方法一
代碼如下:
import pandas as pd
from pandas.tseries.offsets import MonthEnd
df = pd.DataFrame({'date': ['2022-01', '2022-02', '2022-03', '2022-04', '2022-05', '2022-06', '2022-07']})
df['new_date'] = df['date'].astype('datetime64').map(MonthEnd())
print(df)
運(yùn)行結(jié)果如下圖所示:
方法二
至于像202201這樣格式的時(shí)間字符串,【瑜亮老師】做了一下轉(zhuǎn)換,然后繼續(xù)使用類似上面的方法,實(shí)現(xiàn)需求。
import pandas as pd
from pandas.tseries.offsets import MonthEnd
df = pd.DataFrame({'date': ['202201', '202202', '202203', '202204', '202205', '202206', '202207']})
df['new_date'] = pd.to_datetime(df['date'], format='%Y%m').map(MonthEnd())
print(df)
運(yùn)行之后,結(jié)果如下圖所示:

不過(guò)后來(lái)【月神】在測(cè)試的時(shí)候發(fā)現(xiàn),當(dāng)日期是本月的最后一天,轉(zhuǎn)變后會(huì)變成下月的最后一天,有點(diǎn)偏移誤差。

后來(lái)【瑜亮老師】還給了一個(gè)思路,無(wú)需額外導(dǎo)包,不添加任何依賴,如下所示。

后來(lái)【老松鼠】自己給了一份代碼,他自己覺(jué)得方法有點(diǎn)兒笨,但是結(jié)果和效率也還算可以,如下圖所示。

后來(lái)【月神】針對(duì)批量數(shù)據(jù),又多方面進(jìn)行了嘗試,如下所示:

后來(lái)發(fā)現(xiàn)用加號(hào)就快了很多。
針對(duì)效率方面,【月神】也給出了自己的看法,真的學(xué)習(xí)了!
這個(gè)加號(hào),【月神】也舉了一個(gè)例子,來(lái)幫助大家理解。

三、總結(jié)
大家好,我是Python進(jìn)階者。這篇文章主要盤點(diǎn)了一道Pandas時(shí)間處理的問(wèn)題,文中針對(duì)該問(wèn)題給出了具體的解析和代碼實(shí)現(xiàn),幫助粉絲順利解決了問(wèn)題。
最后感謝粉絲【老松鼠】提問(wèn),感謝【瑜亮老師】、【月神】、【dcpeng】、【老松鼠】給出的思路和代碼解析,感謝【馮誠(chéng)】、【艾?!びX(jué)羅】、【Chloe】、【mofyl】等人參與學(xué)習(xí)交流。
小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過(guò)程中,有遇到任何問(wèn)題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。
------------------- End -------------------
往期精彩文章推薦:
在xpath匹配li標(biāo)簽的時(shí)候跳過(guò)第一個(gè)li標(biāo)簽,匹配剩下的li標(biāo)簽表達(dá)式怎么寫?
盤點(diǎn)兩種使用Python網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)東方財(cái)富網(wǎng)分時(shí)數(shù)據(jù)抓取方法

歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群】
萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行
/今日留言主題/
隨便說(shuō)一兩句吧~~
