【问题标题】:Coloring pivot table pandas dataframe着色数据透视表熊猫数据框
【发布时间】:2020-10-21 14:51:57
【问题描述】:

我有一个使用 pandas 创建的数据透视表,如下所示:

**Account** AA-PRD  AB-PRD  AC-PRD  AD-PRD

**Product** 10      20      30      50

PROD1       50      50      60      12

PROD2       44      78      567     678

PROD3       56      234     45      77

我想根据帐户名称开头为整个列应用颜色。例如:如果帐户名称以“AA”开头 color=yellow,如果以“AB”开头则 color = red

如何在 python 中做到这一点并将其保存到 excel 文件中? “帐户”已在 pd.pivot_table 函数中用作“列”。使用下面的代码创建数据透视表

df_summary_table = pd.pivot_table(df_final,values=["cost"],index = "Product", columns="Account")

【问题讨论】:

    标签: python pandas pandas.excelwriter


    【解决方案1】:

    您可以使用Styler.apply 创建样式的DataFrame,并使用loc 通过掩码设置行:

    def color(x): 
       c1 = 'background-color: yellow'
       c2 = 'background-color: red'
       c = ''
       m1 = x.columns.str.startswith('AA')
       m2 = x.columns.str.startswith('AB')
    
       df1 = pd.DataFrame(c, index=x.index, columns=x.columns)
       df1.loc[:, m1] = c1
       df1.loc[:, m2] = c2
       return df1
    
    (df_summary_table.style.apply(color,axis=None)
                     .to_excel('styled.xlsx', engine='openpyxl', index=False))
    

    【讨论】:

    • 这里的“x”是输入数据透视表数据框,对吗? @jezrael
    • @greenking - 不,dfdf_summary_table
    • 然后在函数x也是df_summary_table
    • 非常感谢@jezrael
    • 比如说我想从这个数据透视表中得到如下列表:list1 = [AA-PRD,AB-PRD,AC-PRD,AD-PRD],我怎么能@jezrael?
    猜你喜欢
    • 1970-01-01
    • 2021-02-28
    • 2023-01-11
    • 2016-12-30
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多