如何在应用pandas Styler函数后删除或隐藏指定列?
应用Pandas Styler后隐藏/删除列的解决方案
问题原因
del操作只能用于DataFrame对象,Styler是封装了样式和原数据的独立对象,本身不支持元素删除,所以直接对Styler用del会报错。hide_columns方法是不可变操作,调用后会返回新的Styler对象,不会修改原DataFrame,也不会修改调用该方法的Styler对象。你之前的写法没有接住返回的新Styler,直接用原DataFrame/原Styler导出,自然不会生效。
正确实现代码
你的场景需要先应用高亮规则(高亮规则依赖price_1/2/3列的数值计算条件),再隐藏目标列,最后导出,链式调用写法如下:
myDF.style.apply(highlight_late, axis=None)\ .hide_columns(['price_1', 'price_2', 'price_3'])\ .to_excel('test.xlsx', index=False)
官方示例错误修正
你测试的官方示例写法错误,修正后如下:
df = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns=["a", "b", "c"]) # 接住hide_columns返回的Styler对象,再调用导出方法 df.style.hide_columns(["a", "b"]).to_excel('test2.xlsx')
异常排查
如果按上述写法仍不生效,可升级Pandas到1.3.0以上版本,早期版本的hide_columns对Excel导出的支持存在缺陷,升级命令:pip install --upgrade pandas
内容的提问来源于stack exchange,提问作者Yaroslav Butorin
相关产品推荐
相关产品推荐

