如何用Pandas移除首个空格后的零(支持正则及其他方法)
问题:移除DataFrame字符串中首个空格后的零
原DataFrame结构:
number +123 1234 +123 0123 +123+123 01234 +123 0123 0023
期望生成新列filtered,仅移除首个空格后的零,输出如下:
number filtered +123 1234 +123 1234 +123 0123 +123 123 +123+123 01234 +123+123 1234 +123 0123 0023 +123 123 0023
之前尝试的代码df['filtered'] = df['number'].replace(r'\s(.)', '', regex=True)会移除空格后的任意第一个字符,不符合需求。
解决方案
方法1:正则表达式替换
使用正则匹配首个空格后的0,保留空格仅移除该0:
df['filtered'] = df['number'].replace(r'(\s)0', r'\1', regex=True)
- 正则
(\s)0匹配空格(捕获为分组1)后跟0的组合 - 替换为
\1即保留原空格,去掉后续的0,精准满足需求
方法2:字符串分割处理(非正则)
通过分割首个空格、判断后续字符开头、重新拼接实现:
def process_string(s): if ' ' not in s: return s # 按第一个空格分割为前后两部分 prefix, suffix = s.split(' ', 1) # 如果后缀以0开头,去掉首字符 if suffix.startswith('0'): suffix = suffix[1:] return f"{prefix} {suffix}" df['filtered'] = df['number'].apply(process_string)
- 适合不熟悉正则的场景,逻辑直观易懂,能明确控制仅处理首个空格后的内容
内容的提问来源于stack exchange,提问作者Mamed
相关产品推荐
相关产品推荐

