Pandas将十六进制列转为int触发TypeError的解决方案咨询
pandas十六进制列转十进制报错解决方案
方案1:读取CSV时直接指定列类型(优先推荐)
读取文件阶段就通过dtype参数强制指定十六进制列为字符串类型,从源头避免pandas自动推断类型出错:
import pandas as pd # 声明需要处理的十六进制列 hex_columns = ["data1", "data2", "data3", "data4"] # 读取CSV时指定对应列为字符串类型 df = pd.read_csv("你的文件路径.csv", dtype={col: str for col in hex_columns}) # 批量转换为十进制整数 for col in hex_columns: df[col] = df[col].apply(lambda x: int(x, 16))
方案2:已加载DataFrame后的兼容转换
如果数据已经读入内存,无需重新读取文件,先统一将列值转为字符串再做转换即可:
hex_columns = ["data1", "data2", "data3", "data4"] for col in hex_columns: # 先统一转字符串,再执行十六进制转十进制,兼容整数、带空格等异常情况 df[col] = df[col].apply(lambda x: int(str(x).strip(), 16))
如果你的十六进制值可能带0x前缀,可以调整转换逻辑适配:lambda x: int(str(x).strip().lower().replace("0x", ""), 16)
报错的核心原因是
int()指定base参数时仅支持字符串输入,只要先把所有列值统一转为字符串格式就能解决问题。
内容的提问来源于stack exchange,提问作者mbooma
相关产品推荐
相关产品推荐

