Pandas read_excel()读取xlsb文件时返回错误日期值问题求助
问题根因
你输出的44424不是随机数值,是Excel的序列日期值,代表从1900年1月1日到目标日期的累计天数。pandas读取xlsb格式文件时默认不会自动将该类数值解析为日期格式,因此会直接输出原始数值。
解决方法
方法1:读取文件时直接解析日期
读取时通过parse_dates参数指定需要解析为日期的列,直接得到日期类型数据:
import pandas as pd # 提前安装依赖:pip install pyxlsb xls = pd.ExcelFile('abc.xlsb', engine='pyxlsb') # 读取时指定解析Reporting Date列为日期格式 df = pd.read_excel(xls, 'xyz_sheetname', parse_dates=['Reporting Date']) # 转换为你需要的 日-月缩写-年 格式 df['Reporting Date'] = df['Reporting Date'].dt.strftime('%d-%b-%y') print(df['Reporting Date'])
输出结果即为16-Aug-21。如果后续需要导出为CSV,直接调用df.to_csv()即可保留该日期格式。
方法2:已读取为数值后再转换
如果数据已经加载为DataFrame,也可以直接对数值列做日期转换:
# origin设置为1899-12-30是为了兼容Excel的日期计算规则 df['Reporting Date'] = pd.to_datetime(df['Reporting Date'], unit='D', origin='1899-12-30').dt.strftime('%d-%b-%y')
内容的提问来源于stack exchange,提问作者Tushar
相关产品推荐
相关产品推荐

