Row based style.apply doesn't modify background colors (original) (raw)
Code Sample, a copy-pastable example if possible
add color gradient to column(s)
import numpy as np import math from pandas import * from IPython.display import display, HTML
color gradient
COLORS = ["#F1F2B5", "#CCD7A5", "#A7BC96", "#82A186", "#5D8677", "#386B67", "#135058"]
rows/columns to skip applying gradient to
SKIPROWSORCOLUMNS = ["Day","Users"]
index in row or columns to skip
SKIPINDICES = [0,1]
dataframe to operate on
df = DataFrame([["Monday",100,.65,.39,.33],["Tuesday",120,.45,.32,.31],["Wednesday",150,.75,.33,.30]]) df.columns = ["Day","Users","M1","M2","M3"] #column headers
takes dataframe and colors
returns colormap
def applyColorGradient(data, colors=COLORS, skiprowsorcolumns=SKIPROWSORCOLUMNS, skipindices=SKIPINDICES): numberOfColors = len(colors) i = 0 maxNumberUnset = True maxNumber = 0 while (i < len(data)): if (i not in skipindices): if(maxNumberUnset): maxNumber = data[i] maxNumberUnset = False else: current = data[i] if(current > maxNumber): maxNumber = current i = i + 1 name = data.name dontskip = data.name not in skiprowsorcolumns colorArray = [colors[int(math.floor(value/maxNumber*(numberOfColors-1)))] if dontskip and index not in skipindices else '' for index,value in enumerate(data)] print(colorArray) colorSeries = pandas.Series(["background-color:" + color if color else '' for color in colorArray], name=data.name) display(colorSeries) return colorSeries
applying colorgradient to dataframe
gradientdf = df.style.apply(applyColorGradient, axis=1) #0 is used for columns
display table
display(gradientdf) #0 is used for columns
Expected Output
With axis = 0, this manages to give each cell a background color that is indicated. When I change this to a row based function, this doesn't color any of the cells, even though the color series are coming in. Is this a bug or am I doing something wrong?
output of pd.show_versions()
INSTALLED VERSIONS
commit: None
python: 3.5.1.final.0
python-bits: 64
OS: Linux
OS-release: 3.13.0-91-generic
machine: x86_64
processor:
byteorder: little
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
pandas: 0.17.1
nose: None
pip: 8.1.2
setuptools: 23.0.0
Cython: 0.23.5
numpy: 1.10.4
scipy: 0.17.1
statsmodels: 0.6.1
IPython: 4.2.0
sphinx: None
patsy: 0.4.1
dateutil: 2.5.2
pytz: 2016.3
blosc: None
bottleneck: None
tables: None
numexpr: 2.5.2
matplotlib: 1.5.1
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml: None
bs4: None
html5lib: None
httplib2: None
apiclient: None
sqlalchemy: 1.0.13
pymysql: None
psycopg2: None
Jinja2: None