Pandas Groupby未达预期结果,如何排查原因?
排查Pandas groupby按PROJECTNAME分组失效的方法
检查字符串隐藏格式差异
视觉相同的字符串可能带有空格、制表符或换行符,用以下代码查看原始形态和长度:# 显示字符串原始格式(含不可见字符) print(repr(df['PROJECTNAME'][14500])) print(repr(df['PROJECTNAME'][14501])) # 对比字符串长度 print(len(df['PROJECTNAME'][14500]), len(df['PROJECTNAME'][14501]))排查Unicode字符差异
部分字符视觉一致但属于不同Unicode编码(如全角/半角减号、相似字母),用unicodedata逐个字符验证:import unicodedata # 打印第一个字符串的字符名称 for char in df['PROJECTNAME'][14500]: print(f"{char}: {unicodedata.name(char)}") # 打印第二个字符串的字符名称并对比 for char in df['PROJECTNAME'][14501]: print(f"{char}: {unicodedata.name(char)}")标准化字符串后测试分组
对PROJECTNAME列做清理后重新分组,验证是否是格式问题导致失效:# 去除首尾空白字符 df['PROJECTNAME_clean'] = df['PROJECTNAME'].str.strip() # 替换全角符号为半角(如全角减号) df['PROJECTNAME_clean'] = df['PROJECTNAME_clean'].str.replace('-', '-') # 重新分组并查看结果 grouped = df.groupby('PROJECTNAME_clean') print(grouped.size()) # 输出每个分组的行数查看唯一值统计
直接查看PROJECTNAME列的唯一值和出现次数,确认是否有视觉重复但实际不同的项:print(df['PROJECTNAME'].unique()) print(df['PROJECTNAME'].value_counts())检查空值或空字符串
确认是否存在NaN或空字符串干扰分组逻辑:# 统计NaN数量 print(df['PROJECTNAME'].isna().sum()) # 统计空字符串数量 print(df[df['PROJECTNAME'] == ''].shape[0])
内容的提问来源于stack exchange,提问作者uncertainty
相关产品推荐
相关产品推荐

