如何用Pandas判定呼叫中心经理的服务区域(全球/区域型)
解决方案:CRM经理服务区域分类
需求背景
我们需要根据经理的服务客户区域,判断其是区域型(Regional)还是全球型(Global),判定规则非常明确:
- 若经理处理过自身区域以外的客户 → 标记为
Global - 若经理仅处理自身区域内的客户 → 标记为
Regional
输入数据示例
| Customer_Name | Customer_Region | Manager_Name | Manager_Region |
|---|---|---|---|
| A | Middle East | MGR1 | Middle East |
| B | Asia | MGR1 | Middle East |
| C | Eastern Europe | MGR1 | Middle East |
| D | Middle East | MGR1 | Middle East |
| E | Middle East | MGR2 | Middle East |
| F | Middle East | MGR2 | Middle East |
| G | Middle East | MGR3 | Eastern Europe |
| H | Middle East | MGR3 | Eastern Europe |
预期输出示例
| Manager_Name | Manager_Call_handling_Region |
|---|---|
| MGR1 | Global |
| MGR2 | Regional |
| MGR3 | Global |
实现方案
方案1:Python Pandas 处理本地数据
如果你的数据是本地文件(比如CSV、Excel),用Pandas可以快速完成分类:
import pandas as pd # 替换成你的数据加载方式,比如pd.read_csv("your_data.csv") data = pd.DataFrame({ 'Customer_Name': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], 'Customer_Region': ['Middle East', 'Asia', 'Eastern Europe', 'Middle East', 'Middle East', 'Middle East', 'Middle East', 'Middle East'], 'Manager_Name': ['MGR1', 'MGR1', 'MGR1', 'MGR1', 'MGR2', 'MGR2', 'MGR3', 'MGR3'], 'Manager_Region': ['Middle East', 'Middle East', 'Middle East', 'Middle East', 'Middle East', 'Middle East', 'Eastern Europe', 'Eastern Europe'] }) # 定义分类逻辑:检查每个经理是否有跨区域客户 def classify_manager(group): # 每个经理的区域是固定的,取第一条即可 manager_region = group['Manager_Region'].iloc[0] # 只要有一个客户区域≠经理区域,就标记为Global has_foreign = any(group['Customer_Region'] != manager_region) return 'Global' if has_foreign else 'Regional' # 分组计算并整理结果 result = data.groupby('Manager_Name').apply(classify_manager).reset_index(name='Manager_Call_handling_Region') # 打印或导出结果 print(result) # result.to_csv("manager_classification.csv", index=False)
方案2:SQL 查询数据库数据
如果数据存储在数据库中,直接用SQL就能完成分类,避免导出数据的麻烦:
-- 替换your_table_name为你的实际表名 WITH manager_check AS ( SELECT Manager_Name, Manager_Region, -- 标记该经理是否存在跨区域客户:1=有,0=无 MAX(CASE WHEN Customer_Region != Manager_Region THEN 1 ELSE 0 END) AS has_foreign_customers FROM your_table_name GROUP BY Manager_Name, Manager_Region ) SELECT Manager_Name, CASE WHEN has_foreign_customers = 1 THEN 'Global' ELSE 'Regional' END AS Manager_Call_handling_Region FROM manager_check;
内容的提问来源于stack exchange,提问作者Django0602
相关产品推荐
相关产品推荐

