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

如何清理pandas DataFrame部门列冗余字符实现同部门值统一

pandas 批量统一Department列格式高效方案

核心需求是跳过前缀的不规则部门编码,从首个字符D开始截取完整部门名称,无需手动逐一枚举替换,用pandas原生字符串处理即可实现全量数据毫秒级清洗,具体实现如下:


核心实现代码

先构造测试数据复现对应场景:

import pandas as pd

# 测试数据集,覆盖两种前缀格式、带逗号的部门名场景
df = pd.DataFrame({
    'Date': ['2024-01-01', '2024-01-02', '2024-01-03'],
    'Department': [
        'S220- Department of Transport',
        'S220 Department of Transport',
        'A103- Department of Finance, Taxation and Treasury'
    ]
})

高性能向量化写法(推荐,十万级以上数据优先用)

不需要写循环,直接用pandas字符串向量化接口定位首个D的位置做切片即可:

# 定位每个字符串中第一个"D"的索引,从该位置截取到字符串末尾
df['Department'] = df['Department'].str[df['Department'].str.find('D'):]

带脏数据兜底的写法

如果担心存在没有D的异常脏数据,可以加判断逻辑,异常值保留原值方便后续排查:

def clean_department(s: str) -> str:
    d_start_index = s.find('D')
    # 找到D就截取,没找到返回原始值
    return s[d_start_index:] if d_start_index != -1 else s

df['Department'] = df['Department'].apply(clean_department)

处理效果验证

执行清洗后打印部门唯一值:

print(df['Department'].unique())

输出结果如下,两种前缀的同部门值完全统一,带逗号的部门名完整保留:

['Department of Transport' 'Department of Finance, Taxation and Treasury']

此时再执行pivot或pivot_table操作,同一部门会被正确识别为同一维度,不会出现拆分错误。


方案优势

  • 不需要提前维护数百个部门的编码映射表,不管前缀是「编码+横杠+空格」「编码+空格」还是其他不规则格式,只要部门名固定以D开头就能正确清洗
  • 完整保留D右侧所有内容,包括部门名称内的逗号、空格、特殊符号,不会出现内容误删
  • 向量化实现性能远高于逐行替换、正则匹配循环,百万行以内数据都能秒级处理完成

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:57:07