读取Excel到pandas时日期列失真 如何实现自动化修正?
解决方案
- 跳过前导无效行:该Excel文件前7行是logo、说明类的无效内容,读取时直接指定
skiprows=7即可从正式表头行开始读取,无需手动清理原文件。 - 修复日期列转换异常:Excel中常规格式存储的日期本质是Excel序列号,以1900年1月1日为起始值1计算,且存在历史遗留的闰年计算bug,直接用默认参数转换会出现日期偏移,需要指定对应的起始基准。
完整可运行代码如下:
from requests import get import pandas as pd url = 'http://rigcount.bakerhughes.com/static-files/55ff50da-ac65-410d-924c-fe45b23db298' # 请求文件内容 r = get(url) r.raise_for_status() # 写入本地文件 with open('out.xlsb', 'wb') as out_file: out_file.write(r.content) # 读取时跳过前7行无效内容 Canada_Oil_Gas = pd.read_excel( 'out.xlsb', sheet_name='Canada Oil & Gas Split', engine='pyxlsb', skiprows=7 ) # 转换日期列,指定Excel序列号对应的正确起始日期 Canada_Oil_Gas['Date'] = pd.to_datetime(Canada_Oil_Gas['Unnamed: 0'], origin='1899-12-30', unit='D') # 可选:删除原始的Unnamed: 0列 Canada_Oil_Gas = Canada_Oil_Gas.drop(columns=['Unnamed: 0'])
- 转换后的
Date列和Excel中显示的日期完全一致,整个流程无需手动操作,可完全自动化运行。
内容的提问来源于stack exchange,提问作者baharak Al
相关产品推荐
相关产品推荐

