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

Pandas如何去除DataFrame列中数字间空格并保留姓名间空格

问题根因

你原有代码失效是两个逻辑错误导致的:

  • str.isdigit() 仅能识别无任何其他字符、纯数字组成的字符串,你示例里带空格的数字串比如07 07 34因为包含空格,会被判定为非数字,根本匹配不到待处理的目标行。
  • 直接调用df["Author"].strip()存在两个问题:一是Pandas的Series对象没有直接的strip()方法,必须通过.str访问器调用字符串方法;二是这个写法是针对整列操作,就算匹配逻辑正确,也会误修改不需要改动的姓名单元格。
正确实现代码

核心判断逻辑是:只要单元格内容包含数字,就移除其中所有空格;不含数字的姓名单元格完全保留原格式。
最简洁的实现方式如下:

# 筛选出所有包含数字的行,na=False用来跳过空值避免报错
num_row_mask = df["Author"].str.contains(r'\d', na=False)
# 仅对筛选出的行做空格移除操作
df.loc[num_row_mask, "Author"] = df.loc[num_row_mask, "Author"].str.replace(' ', '', regex=False)

处理后你示例的Author列输出结果为:

Author
0     070734
1     082620
2     082620
3  Tata Smith
4   Jhon Doe
5     082622
6    3409243

完全匹配你的需求:带空格的数字串空格被全部清除,姓名的空格完整保留。

如果后续需要扩展更复杂的清洗规则,也可以用逐行处理的写法,效果一致:

def clean_author_cell(content):
    content = str(content)
    # 包含数字就删所有空格,否则原样返回
    if any(ch.isdigit() for ch in content):
        return content.replace(' ', '')
    return content

df["Author"] = df["Author"].apply(clean_author_cell)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.12 16:15:50