You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pd.read_excel生成字典时索引列整数转字符串失败问题

问题原因及解决办法

原因分析

你遇到的问题核心是:pd.read_excel的dtype参数不会对被指定为索引的列生效。当你设置index_col=0时,pandas会优先读取该列作为索引,这个过程会自动推断数据类型,后续的dtype配置只对普通数据列(比如这里的size_webshop)起作用,所以size列里的数值型数据还是被识别成了int,而size_webshop列的数值则成功转为字符串。

解决办法

这里提供三种可行的解决方案:

方案1:先读取数据再设置索引

先完整读取两列并指定所有列的类型,之后再将size列设为索引并转字典:

fields = ['size','size_webshop']
# 先读取数据,确保size列被转为字符串
df = pd.read_excel('path.xlsx', usecols=fields, dtype={'size': str, 'size_webshop': str})
# 设置索引并转换为字典
dct_of_sizes = df.set_index('size')['size_webshop'].to_dict()

方案2:读取后手动转换索引类型

先按原方式读取,再将索引转为字符串类型:

fields = ['size','size_webshop']
dct_of_sizes = pd.read_excel('path.xlsx', usecols=fields, index_col=0, squeeze=True, dtype={'size_webshop': str})
# 将索引强制转为字符串
dct_of_sizes = dct_of_sizes.rename(index=str).to_dict()

方案3:使用converters参数指定转换函数

converters参数可以作用于所有列(包括要作为索引的列),直接指定转换逻辑:

fields = ['size','size_webshop']
dct_of_sizes = pd.read_excel(
    'path.xlsx', 
    usecols=fields, 
    index_col=0, 
    squeeze=True,
    converters={'size': str, 'size_webshop': str}
).to_dict()

内容的提问来源于stack exchange,提问作者Ron Kieftenbeld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:35:33