Reputation: 29
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
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:
Upvotes: 1