pandas 字符串清洗

649 字
3 分钟
pandas 字符串清洗

pandas 字符串清洗#

很多表格问题都藏在字符串里:前后空格、全角符号、大小写不一致、手机号带短横线、金额带单位。肉眼看起来差不多,程序匹配时却完全不同。

字符串清洗要尽量显式记录规则,避免把数据改得不可追溯。

先统一基本格式#

s = df["name"].astype("string")
df["name_clean"] = (
s.str.strip()
.str.replace(" ", " ", regex=False)
.str.replace(r"\s+", " ", regex=True)
)

这里同时处理普通空格和全角空格,再把连续空白合并成一个空格。

提取结构化信息#

df["phone_digits"] = df["phone"].astype("string").str.replace(r"\D", "", regex=True)
df["province"] = df["address"].astype("string").str.extract(r"^(.*?省)")

提取字段前先确认样本格式,不要只用一条记录写正则。

替换和映射#

对于少量明确的同义值,可以用字典映射,比写一堆 if 更清楚。

mapping = {"男": "M", "男性": "M", "女": "F", "女性": "F"}
df["gender_clean"] = df["gender"].astype("string").str.strip().map(mapping)

清洗后检查#

  • 原始列不要立刻删除,保留对照。

  • 统计清洗前后类别数量。

  • 抽样查看被替换的记录。

  • 对无法解析的值单独导出检查。

实战复盘#

把《pandas 字符串清洗》放到真实数据分析里,我会先准备一份最小样例和一份异常样例。最小样例验证代码路径是否通,异常样例验证缺失值、重复值、类型错误或边界值是否被发现。

pandas 文章最重要的证据不是代码能运行,而是运行后打印出来的 shape、dtypes、缺失率、前几行样本和关键统计是否符合预期。这些输出应该保留在分析记录里。

如果这一步会影响后续报表或模型,我会把清洗前后的行数、字段数量和异常记录数量写清楚。这样以后结果变化时,能追溯到底是哪一步改变了数据。

最小验收样例#

验收《pandas 字符串清洗》时,我会手写一个三到五行的小 DataFrame:一行正常数据,一行缺失或异常数据,一行边界数据。先让示例在小表上跑通,再换成完整数据集。

小表的好处是结果可以人工计算。只要人工结果和 pandas 输出对不上,就说明代码逻辑或字段口径还没想清楚。这个过程比直接在大表上调试更可靠。

小结#

字符串清洗不是把文本变整齐这么简单,而是把不可控输入变成可分析字段。规则越明确,后续越容易复查。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

pandas 字符串清洗
https://blog.tjcheng.cn/posts/backfill/2026-05-22/pandas-string-cleaning/
作者
TengJinCheng
发布于
2026-05-22
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
TengJinCheng
Hello, I'm Teng.
公告
欢迎来到TengJinCheng工作铺!
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
157
分类
7
标签
114
总字数
109,939
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.4
文章许可
CC BY-NC-SA 4.0

文章目录