如何按列范围批量修改DataFrame中多列的数据类型?
解决方法:按列索引范围批量修改DataFrame数据类型
astype()方法仅接受字典格式的参数(键为列名/标签,值为目标数据类型),直接传入索引切片会触发语法错误。要实现按索引范围批量修改类型,可通过以下两种方式完成:
方案1:提取目标列名构建类型映射字典
先通过列索引切片获取对应列的名称,再生成类型映射字典传入astype():
# 注意:Pandas索引从0开始,若业务中"第17列"是从1计数,需将起始索引改为16 cols_to_convert = df.columns[17:41] df = df.astype({col: 'int64' for col in cols_to_convert})
方案2:直接对列切片转换后赋值
选中目标列切片,转换类型后直接覆盖原DataFrame的对应列,无需构建字典:
# 同样注意索引范围的起始值,按需调整为16:41以匹配1计数的列范围 df.iloc[:, 17:41] = df.iloc[:, 17:41].astype('int64')
关键提示
- 确认索引计数规则:Python切片为左闭右开,若按业务习惯从1计数列,
16:41会包含第17到41列(对应索引16至40)。 - 若目标列存在无法转换为
int64的非数值数据,会抛出ValueError,需提前做好数据清洗或异常处理。
内容的提问来源于stack exchange,提问作者seevans38
相关产品推荐
相关产品推荐

