Seaborn palette出现KeyError:3.0问题求助——已匹配列值仍报错
解决思路
- 检查自定义调色板
SBTcolour的键类型:数据中Bodenklasse的3.0是浮点数类型,若调色板里对应的键是整数3,会因类型不匹配触发KeyError。需将调色板的键统一为浮点数(如3.0),或把数据列转为支持缺失值的整数类型(确保非nan值都是整数型浮点数时可用:df['Bodenklasse'] = df['Bodenklasse'].astype('Int64'))。 - 验证调色板是否包含所有非nan的hue值:执行
print(SBTcolour.keys()),确认3.0是否在键列表中,排查是否漏写或键名错误。 - 调试hue类别:在调用
lmplot前打印Seaborn识别的hue类别:
确认输出的类别是否和调色板的键完全匹配。hue_names = df['Bodenklasse'].dropna().unique() print(hue_names) - 处理nan值(可选):若需统一缺失值的显示,可在调色板中添加nan的映射:
SBTcolour[np.nan] = '#cccccc',或提前过滤含nan的行:df = df.dropna(subset=['Bodenklasse'])(业务逻辑允许时)。
内容的提问来源于stack exchange,提问作者Nic
相关产品推荐
相关产品推荐

