python - 将样式化的 pandas 数据框导出到 excel

标签 python pandas pandas-styles

我正在尝试使用下面的 scrpit 将时尚的数据框导出到 exel 文件

  import pandas as pd
  import numpy as np

  np.random.seed(24)
  df = pd.DataFrame({'A': np.linspace(1, 10, 10)})
  df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), 
  columns=list('BCDE'))],axis=1)
  df.iloc[0, 2] = np.nan


  def highlight_greater(x):
      r = 'red'
      g = 'gray'

      m1 = x['B'] > x['C']
      m2 = x['D'] > x['E']

      df1 = pd.DataFrame('background-color: ', index=x.index, columns=x.columns)
      #rewrite values by boolean masks
      df1['B'] = np.where(m1, 'background-color: {}'.format(r), df1['B'])
      df1['D'] = np.where(m2, 'background-color: {}'.format(g), df1['D'])
      return df1


  df.style.apply(highlight_greater, axis=None).to_excel('df.xlsx', engine='openpyxl')

它运行良好,但是当我打开文件时,当条件不匹配时背景是黑色的,有解决这个问题的想法吗?

最佳答案

您可以在函数中创建由空值填充的DataFrame:

def highlight_greater(x):
    r = 'red'
    g = 'gray'

    m1 = x['B'] > x['C']
    m2 = x['D'] > x['E']

    #if not match return empty string
    df1 = pd.DataFrame('', index=x.index, columns=x.columns)
    #rewrite values by boolean masks
    df1['B'] = np.where(m1, 'background-color: {}'.format(r), df1['B'])
    df1['D'] = np.where(m2, 'background-color: {}'.format(g), df1['D'])
    return df1

df.style.apply(highlight_greater, axis=None).to_excel('df.xlsx', engine='openpyxl')

pic

关于python - 将样式化的 pandas 数据框导出到 excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54019597/

相关文章:

python2.7 查看标准输入

python - 在 Pandas 数据框中的日期时间列中查找时隙数

python - 逐行将整个 Pandas 数据框格式化为字符串

python - Pandas Styler 没有按预期将数据帧打印到 Spyder 的控制台

python - Pandas 根据索引名称突出显示行

python - 使用 Styler 的 Pandas DatetimeIndex 格式

python - 设置绘图热图范围

python - 如何将焦点放在 Gtk.TreeView 的特定单元格上?

python - 覆盖 sphinx/docutils 中的默认字段名称限制

python - 如何在 pandas 列中将世纪值(即 1900 和 2000)添加到十年