应用样式器功能后如何删除列? pandas.io.formats.style.Styler.hide_columns - 不工作

Posted

技术标签:

【中文标题】应用样式器功能后如何删除列? pandas.io.formats.style.Styler.hide_columns - 不工作【英文标题】:How to delete column after applying styler function? pandas.io.formats.style.Styler.hide_columns - not work 【发布时间】:2021-12-15 10:42:09 【问题描述】:

应用样式器后如何删除列?这是我的样式函数:

def highlight_late(x):
        c1 = 'background-color: red'
        #condition
        m = x['price_1'] < x['price_main_x']
        m2 = x['price_2'] < x['price_main_x']
        m3 = x['price_3'] < x['price_main_x']
        #empty DataFrame of styles
        df1 = pd.DataFrame('', index=x.index, columns=x.columns)
    

    
#set column price_2 by condition
df1.loc[m, 'price_1'] = c1
df1.loc[m2, 'price_2'] = c1
df1.loc[m3, 'price_3'] = c1
df1.loc[m, 'url_x'] = c1
df1.loc[m2, 'url_y'] = c1
df1.loc[m3, 'url'] = c1

return df1

下面的方法返回 TypeError: 'Styler' 对象不支持删除项目

styles = myDF.style.apply(highlight_late, axis=None)
del styles['price_1']
del styles['price_2']
del styles['price_3']
styles.to_excel('test.xlsx')

我也试试:

mydf.style.hide_columns(['price_1', 'price_2', 'price_3']).to_excel('test.xlsx')

它不起作用,列不会隐藏。

即使来自https://pandas.pydata.org/docs/reference/api/pandas.io.formats.style.Styler.hide_columns.html 的这个简单脚本也不起作用

df = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns=["a", "b", "c"])
df.style.hide_columns(["a", "b"])
df.to_excel('test2.xlsx')

【问题讨论】:

【参考方案1】:

您可以指定要写入 Excel 的列。

cols = [col for col in styles.columns if col == condition]
df.to_excel('test2.xlsx', columns=cols)

【讨论】:

【参考方案2】:

试试hide_columns:

styles = myDF.style.hide_columns(['price_1', 'price_2', 'price_3']).apply(highlight_late, axis=None)

或者删除它们:

styles = myDF.style.hide_columns(['price_1', 'price_2', 'price_3'])
styles = styles.apply(highlight_late, axis=None)

【讨论】:

有什么办法可以删除吗? @YaroslavButorin 编辑我的 .style.hide_columns 由于未知原因对我不起作用。列只是不隐藏

以上是关于应用样式器功能后如何删除列? pandas.io.formats.style.Styler.hide_columns - 不工作的主要内容,如果未能解决你的问题,请参考以下文章

如何添加多个样式表选择器?

自定义标签渲染器在 Xamarin iOS 的滚动列表视图中显示错误的文本样式

C 样式对象删除的包装器

pandas之表格样式

pandas之表格样式

如何去除jquery mobile 的css样式