调用style.applymap后Seaborn绘图报Styler无get属性如何解决
错误原因
设置DataFrame条件样式时,df1.style.applymap()返回的是Styler渲染对象,你直接将该对象赋值覆盖了原本存储DataFrame的df1变量。而sns.barplot的data参数要求传入pandas DataFrame类型,Styler对象不包含绘图逻辑所需的get属性,因此触发AttributeError。
解决方法
可根据你的使用场景二选一:
- 方案1:将样式对象和原始DataFrame分开存储,避免变量覆盖
# 样式结果赋值给独立变量,不修改原df1 df1_styled = df1.style.applymap(lambda x: '' if x<50 else "background-color: darkgreen" ,subset=['%_pedido_centralizado','%_pedido_manual','%sum_pedido_manual_centralizado']) # 绘图时仍传入原始DataFrame f, ax = plt.subplots(figsize=(15, 7)) sns.barplot(x="MTRL_PROD_HIERCY_2", y='%sum_pedido_manual_centralizado', data=df1, ci=None, estimator=sum)
- 方案2:如果已经覆盖了原始
df1变量,可直接从Styler对象中提取原始DataFrame
f, ax = plt.subplots(figsize=(15, 7)) # 通过Styler的.data属性获取原始DataFrame传入绘图函数 sns.barplot(x="MTRL_PROD_HIERCY_2", y='%sum_pedido_manual_centralizado', data=df1.data, ci=None, estimator=sum)
内容的提问来源于stack exchange,提问作者Vivian
相关产品推荐
相关产品推荐

