在 Excel 看到的時間格式是正常的,用 Pandas 讀取後卻變成一串奇怪的數字?
問題
- 在 Excel 看到的時間是「2020/9/29 08:30:36 下午」,使用 Python 的 Pandas 讀取進來的資料卻顯示「44103.8545833333」?
– 這到底是什麼時間格式?
– 該怎麼轉換呢?
為什麼會有這個狀況?
- 由於 Excel 有自己計算時間格式的方式,因此使用 Python 的 Pandas
pd.read_excel('file.xlsx')
讀取時會將原始的時間格式給讀取進來。 - 若嘗試著把 Excel 時間資料改為「通用格式」,就會發現真的變成那串奇妙的數字了!
該如何解決?
- 只要加上一行程式碼就可以轉換完成囉!
– 記得要另外匯入 datetime
– df[‘date’] 為原始時間欄位
pd.TimedeltaIndex(df['date'], unit='d') + datetime(1899, 12, 30)
- 完整程式碼:
延伸補充
- 若是有在經營 Facebook 粉絲專頁的話,使用 Pandas 讀取洞察報告的 Excel 時就會遇到這個問題
- 除了必須使用上述方法解決之外,洞察報告中的發文時間會顯示美國西岸的時間,所以記得要再加上 15 小時,才會是正確的台灣時間唷!
- 程式碼如下:
from datetime import datetime, timedelta
df['real_date'] = pd.TimedeltaIndex(df['date'], unit='d') + datetime(1899, 12, 30) + timedelta(hours=15)
- 當然也可以在匯出報告時就選擇 CSV 檔,時間格式就會直接正常顯示啦~
歡迎追蹤我的 Facebook 粉專:https://www.facebook.com/jumpingcoder