首页 > 解决方案 > Panda read_excel() 给出的日期值不正确

问题描述

我有列名为“报告日期”的 abc.xlsb 文件。它的值为“21 年 8 月 16 日”。我正在尝试将 abc.xlsb 转换为 CSV 文件。但我得到日期“44424”的随机值

import pandas as pd 
xls = pd.ExcelFile('abc.xlsb') 
df = pd.read_excel(xls, 'xyz_sheetname') 
print(df['Reporting Date'])

输出 :

44424

预期输出:

16-Aug-21

请帮忙。提前致谢。

标签: pythonpandasdate

解决方案


44424 表示自 1899 年 12 月 31 日以来经过的天数

例如:

1 = 31 Dec 1899
2 = 1 Jan 1900
3 = 2 Jan 1900

因此,44424 正好是 2021 年 8 月 16 日,正如预期的那样。

在导出到 csv 之前,您可以在 pandas 上使用此逻辑来获取实际日期。

您可能想检查一下:https ://www.ablebits.com/office-addins-blog/2019/08/13/google-sheets-change-date-format/

这应该有效:

from datetime import datetime, timedelta
import pandas as pd

df = pd.DataFrame({"date": [1,2,3,4, 44424]})
df['date'] = df['date'].apply(lambda x: timedelta(x) + datetime(1899,12,30))

print(df)


推荐阅读