Setting function if cell contains string

Question:

I had a function that worked fine – it checks the title of a cell for a ipy.datagrid and then sets the color of the cell based on the header

def header_bg_color(cell):
    if cell.value in ['Portfolio -30%','Change -30%']:
        return '#f3722c'
    elif cell.value in ['Portfolio -20%','Change -20%']:
        return '#f8961e'
    elif cell.value in ['Portfolio -10%','Change -10%']:
        return '#f9844a'

I have changed the name of my ‘Portfolio -10%’ column to ‘Portfolio -10%’ + igwd_change …where igwd_change is a variable I define earlier.

I thought that simply changing the line from

elif cell.value in ['Portfolio -10%','Change -10%']:
    return '#f9844a'

to

elif cell.value in ['Portfolio -10%' + igwd_change,'Change -10%']:
    return '#f9844a'

Would work, but I get an error

Py2VegaNameError: name ‘igwd_change’ is not defined, available variables are [‘cell’, ‘default_value’, ‘index’], note that only a subset of Python is supported

However igwd_change is defined (cell above this one has definitely been run) and I can call the variable in the cell after to check.

Edited to show cell working as desired (Portfolio -10%) yet cell Portfolio 0% (-3.2%) which is Portfolio 0% + igwd_change not having the required vega function applied

Asked By: breaker7

||

Answers:

you need to pass igwd_change variable inside the header_bg_color function as a parameter

def header_bg_color(cell):

should be

def header_bg_color(cell, igwd_change):

Now when calling this function, make sure you pass the same variable

header_bg_color(cell, igwd_change)

or

header_bg_color(cell, "any custom parameter you want here")
Answered By: Rajesh Kanna
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.