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

使用Pandas替换数据列中含范围标识的字符串单元格并转换为浮点型

Pandas化验值字段清洗解决方案

核心需求实现逻辑

只要单元格内容包含<符号就整体替换为0,再统一转换为浮点型,保留原有NaN空值。

单列处理代码(以示例列Ag ICP-MS mg/kg 0.03为例)

# 1. 匹配所有带<的单元格,替换为0
df_clean.loc[df_clean['Ag ICP-MS mg/kg 0.03'].astype(str).str.contains('<', na=False), 'Ag ICP-MS mg/kg 0.03'] = 0
# 2. 整列转换为浮点型
df_clean['Ag ICP-MS mg/kg 0.03'] = df_clean['Ag ICP-MS mg/kg 0.03'].astype(float)

参数说明

  • astype(str):统一转成字符串后再做匹配,避免数值类型调用字符串方法报错
  • na=False:空值NaN匹配时返回False,不参与替换,保留原有空值

多列批量处理代码

如果有多个化验列需要执行相同清洗逻辑,可批量处理:

# 填入所有需要处理的化验列列名
target_cols = ['Ag ICP-MS mg/kg 0.03', 'Au ICP-MS mg/kg 0.01', 'Cu ICP-MS mg/kg 0.05']
for col in target_cols:
    df_clean.loc[df_clean[col].astype(str).str.contains('<', na=False), col] = 0
    df_clean[col] = df_clean[col].astype(float)

正则replace简化写法

也可以用replace正则匹配一步完成替换:

# 正则匹配所有包含<的完整字符串,直接替换为0后转浮点
df_clean['Ag ICP-MS mg/kg 0.03'] = df_clean['Ag ICP-MS mg/kg 0.03'].replace(r'^.*<.*$', 0, regex=True).astype(float)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:57:03