python - 在熊猫数据框中使用索引号突出显示行
问题描述
我正在尝试根据索引值突出显示完整的行。这是我所做的:
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 格式也发生了变化。有人可以告诉这样做的正确方法吗?
解决方案
您可以使用以下方式创建样式的 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))
推荐阅读
- c++ - 如何摆脱 Gtkmm 中的模糊像素?
- android - 如何提示用户更新应用程序,当用户点击更新时,它应该在后台更新
- java - 哪个@GenricGenrator 可以用来代替从1 开始的序列?
- php - 组合和添加数组
- php - 如何将用户元素添加到用户集合
- typo3 - 具有 FluidTYPO3 提供程序扩展的多个页面模板位置
- azure-sql-database - 是否有基于 UI 的方式将 csv 数据加载到 Azure SQL 数据库?
- python - 为什么我不能更改当前工作目录?
- javascript - mediaElement.play() 方法返回一个被拒绝的承诺
- lua - LuaJIT FFI 将 char** 传递给 C 函数