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

无法筛选对应多区域分组的唯一客户邮编问题排查

解决筛选多区域分组客户邮编的问题

原始数据

首先定义目标DataFrame:

import pandas as pd

df = pd.DataFrame({'Cust_Pincode':[487551,487551,639207,452001,484661,484661],
                   'REGIONAL_GROUPING':['WEST I','WEST II','TN II','WEST I','WEST I','WEST II'],
                   'C_LATITUDE':[22.89831,23.74881,10.72208,22.69875,23.88280,23.88280],
                   'C_LONGITUDE':[78.75441,79.48472,77.94168,75.88575,80.98250,80.98250],
                   'Region_dist_lim':[33.577743,33.577743,36.812093,33.577743,33.577743,33.577743]})

问题分析

你写的代码df.groupby(['Cust_Pincode','REGIONAL_GROUPING']).filter(lambda x: len(x) > 1)没有输出,原因是同时按Cust_Pincode和REGIONAL_GROUPING分组后,每个分组的长度都是1——每个邮编和区域的组合都是唯一的,所以len(x) > 1的条件永远不满足,自然筛选不到任何数据。

正确思路是:先找出对应多个不同REGIONAL_GROUPING的Cust_Pincode,再筛选这些邮编对应的所有记录,最后整理成预期格式。

解决代码

步骤1:筛选存在多区域分组的邮编

# 统计每个邮编对应的唯一区域数量,筛选数量>1的邮编
multi_region_pincodes = df.groupby('Cust_Pincode')['REGIONAL_GROUPING'].nunique()[lambda x: x>1].index

步骤2:提取目标数据并调整显示格式

# 筛选目标邮编的记录,仅保留需要的列
result = df[df['Cust_Pincode'].isin(multi_region_pincodes)][['Cust_Pincode', 'REGIONAL_GROUPING']]

# 让每个邮编仅显示一次,匹配预期输出样式
result['Cust_Pincode'] = result['Cust_Pincode'].where(result['Cust_Pincode'] != result['Cust_Pincode'].shift(), '')

最终输出

执行上述代码后,result的显示效果如下:

Cust_Pincode REGIONAL_GROUPING
0       487551            WEST I
1                        WEST II
4       484661            WEST I
5                        WEST II

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:54:20