
本文介绍如何使用pandas高效识别所有含“financial services”的字符串条目,将其标准化为统一值,并合并同类项的数值统计(如求和),适用于数据清洗与类别归一化场景。
本文介绍如何使用pandas高效识别所有含“financial services”的字符串条目,将其标准化为统一值,并合并同类项的数值统计(如求和),适用于数据清洗与类别归一化场景。
在实际数据分析中,常遇到分类字段存在不规范表达的问题——例如“Financial Services”可能以独立项出现,也可能作为复合标签的一部分(如“Financial Services, Lending and Investments”或“Administrative Services, Financial Services”)。若需将所有含该关键词的记录归并为单一标准类别,并汇总其对应指标(如Count),则需结合字符串匹配、条件赋值与分组聚合三步完成。
核心实现步骤
- 定位目标行:使用 .str.contains() 方法生成布尔掩码,精准识别 category_groups_list 列中包含 "Financial Services" 的所有行(默认大小写敏感,如需忽略大小写可添加 case=False 参数);
- 统一重命名:通过 .loc[] 基于掩码批量赋值,将匹配行的分类字段强制设为 "Financial Services";
- 聚合统计:调用 .groupby(...).sum() 对标准化后的类别进行数值列(如 Count)求和,并设置 as_index=False 保持结果为DataFrame格式。
以下是完整可运行代码示例:
import pandas as pd
# 构造原始数据
df = pd.DataFrame({
"category_groups_list": [
"Health Care",
"Financial Services,Lending and Investments",
"Real Estate",
"Financial Services",
"Financial Services,Professional Services",
"Financial Services,Real Estate",
"Administrative Services, Financial Services"
],
"Count": [10, 15, 5, 20, 25, 10, 30]
})
# 步骤1:创建布尔掩码
mask = df["category_groups_list"].str.contains("Financial Services")
# 步骤2:批量替换为标准名称
df.loc[mask, "category_groups_list"] = "Financial Services"
# 步骤3:按新类别聚合求和
result = df.groupby("category_groups_list", as_index=False).sum()
print(result)输出结果:
category_groups_list Count 0 Financial Services 100 1 Health Care 10 2 Real Estate 5
注意事项与进阶建议
-
✅ 空值安全:若列中存在 NaN,.str.contains() 默认返回 NaN(即 False 逻辑上不匹配),但为保险起见,可显式添加 na=False 参数:
mask = df["category_groups_list"].str.contains("Financial Services", na=False) -
? 精确匹配扩展:若需排除形似干扰项(如 "Non-Financial Services"),可改用正则表达式配合词边界 \b:
mask = df["category_groups_list"].str.contains(r"\bFinancial Services\b", regex=True, na=False)
-
? 多关键词处理:如需同时归并多个关键词(如 "FinTech" 和 "Financial Services"),可用管道符 | 组合正则模式:
mask = df["category_groups_list"].str.contains(r"\b(Financial Services|FinTech)\b", regex=True, na=False)
-
? 保留原始明细:若后续还需分析原始组合结构,建议新增辅助列记录原始值,避免信息丢失:
df["original_category"] = df["category_groups_list"].copy()
该方法简洁高效,兼顾可读性与健壮性,是Pandas数据预处理中的典型范式,适用于电商类目归并、行业标签清洗、问卷选项标准化等多种业务场景。










