Python中如何将DataFrame含冒号、空格的object列转换为整数或浮点数
报错原因
调用.str访问器的列中存在非字符串类型的元素(比如空值、本身是数值的object类型值等),pandas仅支持对字符串类型的序列使用.str系列方法。
解决方案
先强制将每列转为字符串类型再做后续处理,同时补充容错参数避免特殊值导致转换失败,代码如下:
import pandas as pd # 批量处理所有列转为浮点型 df = pd.concat([ df[col].astype(str) .str.split() .str[0] .str.replace(':', '', regex=False) .astype(float, errors='coerce') for col in df.columns ], axis=1) # 单独处理需要转为整型的列 df['col'] = df['col'].astype(int, errors='ignore') print(df)
关键修改说明
- 新增
astype(str):强制将列所有值转为字符串,从根源解决.str访问器不兼容的问题 replace方法新增regex=False参数:明确指定是普通字符串替换,避免pandas高版本的正则匹配警告,同时提升处理效率astype补充errors参数:errors='coerce'会将无法转为浮点型的异常值置为NaN,errors='ignore'会保留无法转整型的值不做处理,避免个别异常值导致整个转换流程崩溃,你可以根据自己的数据校验需求调整该参数。
内容的提问来源于stack exchange,提问作者syurtekin
相关产品推荐
相关产品推荐

