如何避免Python Pandas读取Excel时将字符串转为datetime类型?
解决方案
问题根源
pd.read_excel()的dtype参数有时无法完全覆盖自动类型推断——尤其是当Excel单元格本身是日期格式时,pandas会优先解析为datetime类型,哪怕你指定了dtype=str。
可行解决方法
1. 关闭自动日期解析
直接设置parse_dates=False,彻底阻止pandas识别日期格式:
df = pd.read_excel(file, dtype=str, parse_dates=False)
2. 使用converters强制转换为字符串
converters参数优先级高于自动类型推断,可针对所有列或指定列强制转为字符串:
- 针对所有列:
# 先获取工作表的列名 sheet = pd.ExcelFile(file).parse(pd.ExcelFile(file).sheet_names[0]) df = pd.read_excel(file, converters={col: str for col in sheet.columns})
- 针对特定列(比如第一列,假设列名为
col_0):
df = pd.read_excel(file, converters={'col_0': str})
3. 读取后强制转换
如果上述方法无效,可在读取完成后将目标列转为字符串:
df = pd.read_excel(file) df['目标列名'] = df['目标列名'].astype(str)
4. 检查Excel单元格格式
确保Excel中第一行的目标单元格格式设置为文本而非日期格式。若Excel本身存储的是日期类型,pandas读取时更容易触发自动解析。
内容的提问来源于stack exchange,提问作者InetVMart Indonesia
相关产品推荐
相关产品推荐

