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

如何按条件修改含重复姓名的DataFrame 实现分组标记与合同数求和

解决方案

针对按id、name维度分组统计的需求,可根据你的数据处理环境选择对应实现方案,两种方案在大数据量场景下都有稳定的性能表现,核心逻辑一致:

  1. 对number of contracts字段分组求和,得到单组合同总数量
  2. 对Capitalization字段做分组判断:如果分组下同时存在yes和no两个值,标记为both;如果仅存在yes则标记为yes;仅存在no则标记为no

Python Pandas 实现

适合本地处理离线表格数据的场景:

import pandas as pd

# 替换为实际数据读取逻辑,支持pd.read_csv、pd.read_excel、pd.read_sql等
df = pd.read_csv("your_data_path.csv")

# 分组聚合计算
result = df.groupby(['id', 'name'], as_index=False).agg(
    **{'number of contracts': ('number of contracts', 'sum')},
    Capitalization_x=('Capitalization', lambda x: 'both' if {'yes','no'}.issubset(set(x)) else x.iloc[0])
)

# 结果导出或后续处理
result.to_csv("result.csv", index=False)

优化提示:数据量超过百万级时,可以先把Capitalization字段转为category类型,能进一步提升30%以上的聚合计算速度。


SQL 实现

适合直接在数据库/数仓中处理大规模数据的场景:

SELECT 
    id,
    name,
    CASE 
        WHEN COUNT(DISTINCT Capitalization) = 2 THEN 'both'
        ELSE MAX(Capitalization)
    END AS Capitalization_x,
    SUM(`number of contracts`) AS `number of contracts`
FROM your_table_name
GROUP BY id, name;

两种方案运行后输出的结果和预期完全一致:

idnameCapitalization_xnumber of contracts
1Jimmyboth4
2Jennyno7
3Elleyes5
4Dannyyes2
5Charlesyes1
6Freddyno3
7Elleboth8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:12:20