如何删除Pandas DataFrame列中数字后的单位,同时保留纯文本行内容
问题原因
你原有代码中\D会匹配所有非数字字符,纯文本行的内容会被全部匹配并删除,得到空值,不符合预期。
解决方案
使用更精准的正则,仅处理开头为数字的行,删除数字后的所有内容,非数字开头的行保持原样即可,代码如下:
df["Column"] = df["Column"].replace(r"^(\d+)\D.*$", r"\1", regex=True)
正则逻辑说明
^(\d+):匹配行开头的连续数字,捕获为第一组\D.*$:匹配数字后的所有非数字开头到行尾的内容- 替换为
\1即仅保留捕获到的开头数字,没有匹配到规则的行内容不会被修改
如果你需要兼容带小数点的数值(比如
2.5 cm),可以把正则调整为:df["Column"] = df["Column"].replace(r"^(\d+\.?\d*)\D.*$", r"\1", regex=True)
运行后即可得到你需要的输出结果。
内容的提问来源于stack exchange,提问作者Jagadeeshkumar Viswanathan
相关产品推荐
相关产品推荐

