0

I'm having trouble getting my dataframe to HTML when using style.apply().

Using this line of code throws the same error whether I use .render() or .to_html()

df = pd.read_csv(r'C:\test_data.csv') print(df.style.apply(lambda x: f"color: {'red' if x == 'BAD' else 'black'}", axis=1).to_html()) 

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

However, when I use .applymap() I can use .to_html() without any errors but I want the condition to be applied row-wise and not element-wise.

1 Answer 1

1

When using axis=1 you receive a row and is expected that you return a list with the same length. From documentation:

Parameters: func : function
func should take a Series if axis in [0,1] and return a list-like object of same length, ...

Therefore, you could use a list comprehension for each item in the row:

df.style.apply(lambda row: [f"color: {'red' if i == 'BAD' else 'black'}" for i in row], axis=1).to_html() 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.