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

处理连续与分类数据:按Customer_ID聚合时如何保留客户及代理性别?

问题描述

现有6位客户多次向代理申请贷款,代理可服务多位客户(如Agent 306服务Customer 1和2,Agent 309服务Customer 5和6)。需按Customer_ID聚合每位客户的贷款总额,同时保留CustomerGender(客户性别)与AgentGender(代理性别)字段。

已尝试以下Python pandas代码,但执行后仅得到数值字段的聚合结果,无法看到客户及代理性别:

import pandas as pd

data = {'Customer_ID': [1, 1, 1, 2, 2, 3, 4, 4, 5, 5, 5, 5, 6, 6],
      'Loan': [200, 250, 300, 400, 300, 500, 150, 150, 400, 250, 150, 300, 200, 200],
     'CustomerGender': ['M', 'M', 'M', 'F', 'F', 'M', 'M', 'M', 'F', 'F', 'F', 'F', 'F', 'F'],
     'Agent_ID': [306, 306, 306, 306, 306, 307, 308, 308, 309, 309, 309, 309, 309, 309], 
     'AgentGender': ['F', 'F', 'F', 'M', 'M','M', 'M', 'M', 'F', 'F', 'F', 'F', 'F', 'F'],
     'settlement_value': [23.5, 30.99, 306, 86, 50, 307.35, 1200.54, 25, 48.88, 400, 2100.10, 30, 1309.10, 500.50]}

# 转换为DataFrame
data = pd.DataFrame(data)

# 将性别字段设为分类类型
data['AgentGender']=data['AgentGender'].astype('category')
data['CustomerGender']=data['CustomerGender'].astype('category')
 
# 按Customer_ID聚合贷款总额
data.groupby(data['Customer_ID']).sum()
解决方案

问题根源在于groupby().sum()默认仅对数值型字段执行求和操作,分类/字符串类型的性别字段会被自动排除。针对同一Customer_ID对应唯一性别值的特点,可通过以下几种方式解决:

方法1:自定义聚合规则(推荐)

直接指定每个字段的聚合逻辑:对Loan求和,对性别字段取唯一值(因为同一客户的性别、代理性别不会变化):

result = data.groupby('Customer_ID').agg(
    贷款总额=('Loan', 'sum'),
    客户性别=('CustomerGender', 'first'),
    代理性别=('AgentGender', 'first')
).reset_index()

reset_index()用于将Customer_ID从索引列转为普通字段,方便后续查看和处理。

方法2:拆分操作后合并结果

先提取去重后的客户性别信息,再计算贷款总额,最后合并两个结果:

# 获取每个客户的唯一性别信息
gender_data = data[['Customer_ID', 'CustomerGender', 'AgentGender']].drop_duplicates()
# 计算每位客户的贷款总额
loan_total = data.groupby('Customer_ID')['Loan'].sum().rename('贷款总额').reset_index()
# 合并数据
result = pd.merge(gender_data, loan_total, on='Customer_ID')

方法3:用transform添加总额列后去重

通过transform给每行数据添加对应客户的贷款总额,再去重得到唯一客户记录:

# 新增贷款总额列
data['贷款总额'] = data.groupby('Customer_ID')['Loan'].transform('sum')
# 提取所需字段并去重
result = data[['Customer_ID', 'CustomerGender', 'AgentGender', '贷款总额']].drop_duplicates()

内容的提问来源于stack exchange,提问作者Andrea Erőss

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:45:34