基于服务列值为Pandas DataFrame新增客户服务次数统计列
解决医疗服务CSV的客户服务次数统计问题
我之前处理过类似的医疗数据规整需求,这种把长格式单条服务数据转成宽格式客户服务次数统计的场景,用Python的Pandas或者Excel透视表都能高效解决,给你两种实用方案:
方案一:用Python Pandas处理(适合批量/自动化需求)
这是最灵活的方式,适合需要重复处理或者数据量较大的情况:
- 先导入Pandas并读取原始CSV文件:
import pandas as pd # 替换成你的CSV文件路径和实际列名 df = pd.read_csv('medical_services.csv') - 使用
pivot_table生成按客户ID分组的服务次数统计:
如果你更喜欢用# 替换`ID_profile`为你的客户ID列名,`Service_Type`为服务类型列名 stats_df = df.pivot_table( index='ID_profile', columns='Service_Type', aggfunc='size', # 统计每个组合的行数(即服务次数) fill_value=0 # 把未接受的服务次数填充为0 )crosstab,效果是一样的:stats_df = pd.crosstab(df['ID_profile'], df['Service_Type']) - 把统计结果保存为新的CSV文件:
stats_df.to_csv('customer_service_stats.csv')
方案二:用Excel透视表处理(适合非代码用户)
如果你不想写代码,Excel的透视表完全能满足需求:
- 选中原始CSV里的所有数据区域(包含表头)
- 点击顶部菜单栏的「插入」→「数据透视表」,选择存放结果的位置
- 在右侧的透视表字段面板中:
- 把
ID_profile拖到「行」区域 - 把服务类型列(比如
Service_Type)拖到「列」区域 - 再把服务类型列拖到「值」区域,然后点击值字段的下拉菜单,选择「值字段设置」→「计数」
- 把
- 最后把透视表的结果复制粘贴到新工作表,就是你需要的宽格式统计表格了(空白单元格可以手动替换为0)
注意事项
- 确保
ID_profile是唯一标识每位客户的字段,没有格式不一致(比如大小写、空格)的问题,否则会导致统计重复 - 如果服务类型的取值非常多,生成的列会比较多,这是正常的,每个服务类型都会单独成为一列
- 如果原始数据中有缺失值,Pandas的
fill_value=0会自动填充,Excel透视表需要手动处理空白值
内容的提问来源于stack exchange,提问作者EduardoG
相关产品推荐
相关产品推荐

