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

Pandas处理大CSV文件时Pressure列非数值脏数据清洗问题

原代码问题说明

  1. 仅选取Pressure单列执行操作,返回结果为Series结构,自然丢失Date/Time列与表头
  2. 基于isinstance的数值判断逻辑不适用于CSV读取场景:只要列中存在非数值内容,pandas默认将整列设为object类型,纯数字条目也会以字符串格式存储,无法通过类型判断筛选脏数据
  3. 筛选逻辑取反:使用~标记后最终返回的是非数值的脏数据行,而非清洗后的有效数据

清洗方案

直接使用pandas内置pd.to_numeric()函数实现需求,全程不会修改Date/Time列的内容。

基础方案(直接过滤非数值脏数据)

import pandas as pd

# 读取CSV后执行转换,无法转为数值的脏数据会被标记为NaN
df['Pressure'] = pd.to_numeric(df['Pressure'], errors='coerce')
# 丢弃Pressure列为空的脏数据行,保留完整Date/Time列与表头
df_cleaned = df.dropna(subset=['Pressure']).reset_index(drop=True)

扩展方案(提取字符串中嵌入的数值)

如果脏数据为数值混杂字符的格式(如示例中的150+AA42BB43),可先通过正则提取数值部分再做转换:

# 提取条目中的整数/浮点数部分,无有效数值则返回空
df['Pressure'] = df['Pressure'].str.extract(r'(\d+\.?\d*)', expand=False)
# 后续执行转数值、过滤空值操作即可
df['Pressure'] = pd.to_numeric(df['Pressure'], errors='coerce')
df_cleaned = df.dropna(subset=['Pressure']).reset_index(drop=True)

保留脏数据行的处理方案

如果不需要删除脏数据行,可将空值替换为默认值:

# 例如用Pressure列的均值填充空值
df['Pressure'] = df['Pressure'].fillna(df['Pressure'].mean())
# 或用前一个有效值填充
df['Pressure'] = df['Pressure'].fillna(method='ffill')

内容的提问来源于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 04:06:06