首页 > 解决方案 > 在熊猫数据框中使用索引号突出显示行

问题描述

我正在尝试根据索引值突出显示完整的行。这是我所做的:

df = pd.read_excel(module)
rows = df.index[df['MYCOLUMN'].str.contains(command, na=False)].tolist()

if rows: 
        df.style.apply(lambda x: ['background: red' if x.name in rows else '' for i in x], axis=1)
        df.to_excel(module, index = False) 

但是该行没有得到高度重视,我的 excel 格式也发生了变化。有人可以告诉这样做的正确方法吗?

标签: pythonexcelpython-3.xpandasindexing

解决方案


您可以使用以下方式创建样式的 DataFrameStyler.apply并通过掩码设置行loc

def color(x): 
   c1 = 'background-color: red'
   c = ''
   m1 = df['MYCOLUMN'].str.contains(command, na=False)

   df1 = pd.DataFrame(c, index=x.index, columns=x.columns)
   df1.loc[m1, :] = c1
   return df1

(df.style.apply(color,axis=None)
         .to_excel('styled.xlsx', engine='openpyxl', index=False))

对我来说,函数外的工作变量如下:

def color(x): 
   c = ''
   m1 = df['MYCOLUMN'].str.contains(command, na=False)

   df1 = pd.DataFrame(c, index=x.index, columns=x.columns)
   df1.loc[m1, :] = c1
   return df1

command = 'test'
c1 = 'background-color: red'

(df.style.apply(color, axis=None)
         .to_excel('styled.xlsx', engine='openpyxl', index=False))

推荐阅读