Python?Pandas讀取Excel日期數(shù)據(jù)的異常處理方法
異常描述
有時我們的Excel有一個調(diào)整過自定義格式的日期字段:
當(dāng)我們用pandas讀取時卻是這樣的效果:
不管如何指定參數(shù)都無效。
出現(xiàn)原因
沒有使用系統(tǒng)內(nèi)置的日期單元格格式,自定義格式?jīng)]有對負(fù)數(shù)格式進行定義,pandas讀取時無法識別出是日期格式,而是讀取出單元格實際存儲的數(shù)值。
解決方案:修改自定義格式
可以修改為系統(tǒng)內(nèi)置的自定義格式:
或者在自定義格式上補充負(fù)數(shù)的定義:
增加;@即可
pandas直接解析Excel數(shù)值為日期
有時這種Excel很多,我們需要通過pandas批量讀取,挨個人工修改Excel的自定義格式費時費力,下面我演示如何使用pandas直接解析這些數(shù)值成為日期格式。
excel中常規(guī)格式和日期格式的轉(zhuǎn)換規(guī)則如下:
1900/1/1為起始日期,轉(zhuǎn)換的數(shù)字是1,往后的每一天增加1
1900/1/2轉(zhuǎn)換為數(shù)字是 2
1900/1/3轉(zhuǎn)換為數(shù)字是 3
1900/1/4轉(zhuǎn)換為數(shù)字是 4
以此類推
excel中時間轉(zhuǎn)換規(guī)則如下:
在時間中的規(guī)則是把1天轉(zhuǎn)換為數(shù)字是 1
每1小時就是 1/24
每1分鐘就是 1/(24×60)=1/1440
每1秒鐘就是 1/(24×60×60)=1/86400
根據(jù)Excel的日期存儲規(guī)則,我們只需要以1900/1/1為基準(zhǔn)日期,根據(jù)數(shù)值n偏移n-1天即可得到實際日期。不過還有個問題,Excel多存儲了1900年2月29日這一天,而正常的日歷是沒有這一天的,而我們的日期又都是大于1900年的,所以應(yīng)該偏移n-2天,干脆使用1899年12月30日作為基準(zhǔn),這樣不需要作減法操作。
解析代碼如下:
import pandas as pd from pandas.tseries.offsets import Day df = pd.read_excel("日期.xlsx") basetime = pd.to_datetime("1899/12/30") df.日期 = df.日期.apply(lambda x: basetime+Day(x)) df.日期 = df.日期.apply(lambda x: f"{x.month}月{x.day}日") df.head()
日期 | |
---|---|
0 | 6月8日 |
1 | 6月9日 |
2 | 6月10日 |
3 | 6月11日 |
4 | 6月12日 |
如果需要調(diào)用time的strftime方法,由于包含中文則需要設(shè)置locale:
import pandas as pd from pandas.tseries.offsets import Day import locale locale.setlocale(locale.LC_CTYPE, 'chinese') df = pd.read_excel("日期.xlsx") basetime = pd.to_datetime("1899/12/30") df.日期 = df.日期.apply(lambda x: basetime+Day(x)) df.日期 = df.日期.dt.strftime('%Y年%m月%d日') df.head()
日期 | |
---|---|
0 | 2021年06月08日 |
1 | 2021年06月09日 |
2 | 2021年06月10日 |
3 | 2021年06月11日 |
4 | 2021年06月12日 |
總結(jié)
到此這篇關(guān)于Python Pandas讀取Excel日期數(shù)據(jù)的異常處理的文章就介紹到這了,更多相關(guān)Pandas讀取Excel日期數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python漏洞驗證程序Poc利用入門到實戰(zhàn)編寫
這篇文章主要為大家介紹了Python?Poc利用入門到實戰(zhàn)編寫實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2022-02-02Python使用pyinstaller實現(xiàn)學(xué)生管理系統(tǒng)流程
pyinstaller是一個非常簡單的打包python的py文件的庫,下面這篇文章主要給大家介紹了關(guān)于Python?Pyinstaller庫安裝步驟以及使用方法的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02Python中l(wèi)ru_cache的使用和實現(xiàn)詳解
這篇文章主要介紹了Python 中 lru_cache 的使用和實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01