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

DataFrame相似变速箱名称分组异常:如何实现同类统一聚合?

解决DataFrame相似字符串分组不合并的问题

出现这类问题的核心原因是相似字符串存在细微格式差异(比如大小写、空格、连字符、拼写变体),导致groupby无法识别为同一分组。以下是几种针对性的解决方法:

方法1:统一字符串基础格式

先对Transmission列做标准化清洗,消除大小写、空格、特殊符号的差异:

# 清洗列:转小写+去首尾空格+替换连字符为空格
Cardata['Transmission_clean'] = Cardata['Transmission'].str.lower()\
                                  .str.strip()\
                                  .str.replace('-', ' ')
# 基于清洗后的列分组聚合
CardataTransmissions = Cardata.groupby(["Transmission_clean"]).agg(Totalsales=('number', 'sum'))

方法2:自定义映射统一变体

如果存在明确的拼写/格式变体(比如"Semi-Auto"、"semiauto"这类),直接用映射字典将所有变体映射到统一名称:

# 定义映射字典,根据实际数据补充所有相似变体
trans_mapping = {
    'semi-auto': 'Semi Auto',
    'semiauto': 'Semi Auto',
    'Semi-Auto': 'Semi Auto',
    'semi auto': 'Semi Auto'
}
# 先转小写匹配映射,未匹配到的保留原内容
Cardata['Transmission_clean'] = Cardata['Transmission'].str.lower().map(trans_mapping).fillna(Cardata['Transmission'])
# 执行分组聚合
CardataTransmissions = Cardata.groupby(["Transmission_clean"]).agg(Totalsales=('number', 'sum'))

方法3:模糊匹配批量合并变体

如果变体较多且不确定所有格式,可以用模糊匹配工具自动识别相似字符串:

  1. 先安装依赖库:pip install fuzzywuzzy python-Levenshtein
  2. 执行以下代码:
from fuzzywuzzy import process

# 获取所有唯一的变速箱类型
unique_trans = Cardata['Transmission'].unique()
# 设定基准类别(比如以"Semi Auto"为标准)
base_category = "Semi Auto"
# 筛选出与基准相似度≥80的变体(阈值可根据需求调整)
similar_variants = [item for item in unique_trans if process.extractOne(item, [base_category])[1] >= 80]
# 将所有相似变体替换为基准类别
Cardata['Transmission_clean'] = Cardata['Transmission'].replace(similar_variants, base_category)
# 分组聚合
CardataTransmissions = Cardata.groupby(["Transmission_clean"]).agg(Totalsales=('number', 'sum'))

前置检查建议

先查看所有唯一值,明确差异类型,方便选择最适合的方法:

print(Cardata['Transmission'].unique())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:12:28