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

Pandas:大数据集中字符串列含float值如何清理以便转为数值类型

问题根因

你的代码报错和逻辑不生效主要有4个问题:

  • 循环中int(i)仅转换了临时变量,没有赋值回DataFrame,转换结果不会生效
  • Pandas DataFrame不存在remove方法,无法通过该方式删除行
  • 直接遍历列元素只能拿到值,无法定位对应行,删除操作无靶向性
  • 若字符串本身带小数点(如"123.45"),直接调用int()转换会触发Invalid literal for int() with base 10报错

解决方案

你的需求是剔除Pressure列的float值,保留字符串转成数值类型,直接用Pandas向量化操作即可,效率远高于循环,适合大文件:

import pandas as pd

df = pd.read_csv('stripperdata.csv')

# 筛选仅保留Pressure列为字符串的行,删除float类型行
df = df[df['Pressure'].apply(lambda x: isinstance(x, str))].copy()

# 把字符串转为数值类型,自动兼容整数/小数字符串,不会出现int转换报错
df['Pressure'] = pd.to_numeric(df['Pressure'])

如果担心部分字符串格式异常转失败,可以加容错处理,转换失败的行自动删除:

import pandas as pd

df = pd.read_csv('stripperdata.csv')

df = df[df['Pressure'].apply(lambda x: isinstance(x, str))].copy()
# errors='coerce'代表转换失败的数值自动设为NaN
df['Pressure'] = pd.to_numeric(df['Pressure'], errors='coerce')
# 删除转换失败的空值行,重置索引
df = df.dropna(subset=['Pressure']).reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:36:04