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

如何标准化Name列后用pandas groupby求和合并重复项?

清理DataFrame中Name列冗余内容后实现分组求和

先看示例场景,假设你的原始DataFrame是这样的:

import pandas as pd

df = pd.DataFrame({
    'Name': ['Michael', 'Michael ()', 'Sarah', 'Sarah - (0)'],
    'Fee': [3, 4, 6, 4]
})

直接用groupby('Name')会因为名称后缀的差异导致分组失败,核心解决思路是先清理Name列的冗余后缀,再进行分组求和。

步骤1:清理Name列

用正则表达式匹配并移除名称后面的冗余内容(空格、括号、短横线及后续字符):

# 移除空格及之后的所有冗余,得到干净的名称
df['Cleaned_Name'] = df['Name'].str.replace(r'\s.*', '', regex=True)

如果遇到不带空格的冗余(比如Michael(0)、Sarah-1),可以用更通用的正则覆盖这类场景:

# 匹配短横线、空格、左括号开头的后续内容并移除
df['Cleaned_Name'] = df['Name'].str.replace(r'[-\s(].*', '', regex=True)

步骤2:分组求和

基于清理后的列分组计算Fee总和,还可以重命名列还原成原名称:

# 分组求和
df2 = df.groupby('Cleaned_Name')['Fee'].sum().reset_index()
# 重命名列名
df2 = df2.rename(columns={'Cleaned_Name': 'Name'})

最终得到的结果就是你预期的:

Name  Fee
0   Michael    7
1     Sarah   10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:17:26