Anna  Abrahamyan
Anna Abrahamyan

Reputation: 29

conditional formatting python dataframe column values with different colors

I am trying to color values of one column in my df based on its values. I tried with only one value but I don't get any colored result. Here is my code

writer = pd.ExcelWriter('resultcolored.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet')
workbook = writer.book
worksheet = writer.sheets["Sheet"]



format = workbook.add_format({'bg_color':   '#C6EFCE',
                               'font_color': '#006100'})
worksheet.conditional_format( 'AJ1:AJ10',
    {   'type': 'text',
        'criteria': 'containing',
        'value': 'Direct',
        'format': format
    }
)
writer.save()

It saves the file, but doesn't colot any of the values. Can you please help me out?

Upvotes: 1

Views: 451

Answers (1)

jmcnamara
jmcnamara

Reputation: 41524

It should work as expected. Here is a working example based in your code:

import pandas as pd


# Create a Pandas dataframe from some data.
df = pd.DataFrame({'Data': ['Foo', 'Director', 'bar', 'Directory', 'Baz']})

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('pandas_conditional.xlsx', engine='xlsxwriter')

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel(writer, sheet_name='Sheet1')

# Get the xlsxwriter workbook and worksheet objects.
workbook  = writer.book
worksheet = writer.sheets['Sheet1']

format = workbook.add_format({'bg_color':   '#C6EFCE',
                              'font_color': '#006100'})

# Apply a conditional format to the cell range.
worksheet.conditional_format( 'B2:B6',
    {   'type': 'text',
        'criteria': 'containing',
        'value': 'Direct',
        'format': format
    }
)

writer.save()

Output:

enter image description here

Upvotes: 1

Related Questions