3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
在Python重建R語言lubridate套件的ymd,將數字轉換為日期 2020-12-05 更新 目錄 原始文章 〈在Python重建R語言lubridate套件的ymd,將數字轉換為日期〉   許多Python使用者都曾抱怨datetime套件不好用,語法繁瑣而且不直覺,不像R語言中的lubridate這麼簡單好用,ymd()甚至可以直接將數字轉為日期,像是20200101變成2020-01-01。雖然Python中也有改良版的日期套件,像是arrow,但基於一個「除非超級必要,否則不使用額外套件」的原則,我個人還是習慣在datetime的基礎上,寫一些方便使用的function,並累積成自己的toolkit,可以參考另一篇文章〈在Python中載入自己寫的套件/模組/包/Library/Modules〉。 以下就是我參考lubridate ymd()的使用方法,在Python中重建的程式碼。 來吧,複製貼上 def str_replace_special(string, value=''): ''' Remove special characters. ''' import re results = re.sub('[^a-zA-Z0-9 \n\.]', value, string) return resultsdef ymd(series): ''' Convert integer to date. ''' if isinstance(series, str): series = str_replace_special(series) if isinstance(series, int) | isinstance(series, str): series = str(series) series = datetime.datetime(year = int(series[0:4]), month = int(series[4:6]), day = int(series[6:8])) return series 相反地,我用另一個function將日期轉換為數字格式,減少記憶體的使用量。 def simplify_date(obj): import datetime if isinstance(obj, int): return obj if (isinstance(obj, datetime.datetime)) or (isinstance(obj, datetime.date)): obj = obj.strftime('%Y%m%d') if isinstance(obj, str): obj = str_replace_special(obj) obj = int(obj) return obj 相關文章 〈在DataCamp學Python和R語言,快速入門資料科學〉 A Aron 工業設計系畢業,曾任職知名品牌行銷企劃,做點設計,寫文案也寫網站;目前擔任零售業數據分析師。最近開始練格鬥和Python量化投資。 技術筆記

本文由aronhackcom提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦