如何从含nan值的多列数据中移除字符串和特殊字符仅保留数字
基于Python Pandas的实现方案
你可以用正则匹配替换特殊字符的方式完成批量清洗,适配单/多列场景,同时兼容nan值处理:
前置依赖
确保你已经导入需要的库:
import pandas as pd import numpy as np
单列处理代码
针对你给出的OTHER列,可直接用如下代码完成转换:
# 移除$符号和千位分隔逗号,转成浮点数值类型,nan值会自动保留 df['OTHER'] = df['OTHER'].replace(r'[\$,]', '', regex=True).astype(float) # 如果需要输出时nan显示为空字符串(匹配你给出的预期输出样式),可额外加一行 df['OTHER'] = df['OTHER'].replace(np.nan, '', regex=True)
多列批量处理代码
如果要对多个列执行同样的清洗逻辑,只需要把目标列名放入列表批量遍历即可:
# 填入所有需要清洗的列名 clean_cols = ['OTHER', 'COL1', 'COL2', 'COL3'] for col in clean_cols: df[col] = df[col].replace(r'[\$,]', '', regex=True).astype(float) # 需转空字符串则加下行 # df[col] = df[col].replace(np.nan, '', regex=True)
逻辑说明
- 正则
r'[\$,]'会匹配所有$符号和千位分隔用的逗号,直接替换为空即可剥离所有非数值的特殊字符 astype(float)转换不会影响原本的nan值,转换后的数据为浮点类型,可直接用于后续数值计算- 若无需做数值计算仅用于展示,再将nan替换为空字符串即可,完全匹配你给出的预期输出结果。
内容的提问来源于stack exchange,提问作者spectre
相关产品推荐
相关产品推荐

