Итак, у меня есть фрейм данных с несколькими столбцами, и я конвертирую этот фрейм данных, чтобы преуспеть в своей первой функции — beautify_output, где я добавляю цвет ко всей строке на основе значения столбца результата.
В следующей функции я сталкиваюсь с проблемами: когда я пытаюсь запустить код, я постоянно получаю сообщение об ошибке всякий раз, когда пытаюсь инициализировать sf=StyleFrame(df). С помощью этой функции я пытаюсь увеличить ширину столбцов Excel для некоторых столбцов. Вот полный код. Я на питоне 3.7
from styleframe import StyleFrame
import pandas as pd
df = pd.read_csv('final_output.csv')
def beatify_output(row):
if row['result'] == 'Pass':
return ['background-color: red'] * len(row)
if row['result'] == 'Fail'
return ['background-color: green'] * len(row)
df = df.style.apply(beatify_output, axis=1)
df.to_excel('my_file.xlsx',sheet_name='Sheet1')```
def expand_columns_size():
len_max = 50
excel_writer =
StyleFrame.ExcelWriter('my_file.xlsx')
sf = StyleFrame(df)
sf.set_column_width(columns=['actual_prompt', 'expected_prompt'], width=len_max)
sf.to_excel(excel_writer=excel_writer)
excel_writer.save()
expand_columns_size()
Я добавил свой полный код. Спасибо за ваш отзыв. Можете ли вы взглянуть сейчас, пожалуйста?
Ошибка связана с тем, что styleframe не знает, как обрабатывать объекты стилей панд, поскольку у него есть собственный способ выражения стилей.
Поскольку вы уже используете styleframe, с его помощью будет проще выполнять всю стилизацию.
import pandas as pd
from styleframe import StyleFrame, Styler
df = pd.read_csv('final_output.csv')
sf = StyleFrame(df)
sf.apply_style_by_indexes(sf[sf['result'] == 'Pass'], Styler(bg_color = "green"))
sf.apply_style_by_indexes(sf[sf['result'] == 'Fail'], Styler(bg_color = "red"))
# If there are ONLY 'Pass'/'Fail' values in 'result' column we can use
# sf.apply_style_by_indexes(
# indexes_to_style=sf[sf['result'] == 'Pass'],
# styler_obj=Styler(bg_color = "green"),
# complement_style=Styler(bg_color = "red")
# )
len_max = 50
sf.set_column_width(columns=['actual_prompt', 'expected_prompt'], width=len_max)
sf.to_excel('my_file.xlsx').close() # or .save() if close() raises an AttributeError
результаты
Эй, чувак, очень ценю это. Это работает так, как вы показали здесь. Еще одна маленькая вещь: есть ли способ динамически регулировать ширину каждого столбца в зависимости от его максимального значения? Кроме того, можете ли вы указать мне несколько руководств по StyleFrame, поскольку моему проекту их потребуется много. Еще раз спасибо! Ты спаситель
@TanmaySharma Вместо использования set_column_width
передайте best_fit=['actual_prompt', 'expected_prompt']
на to_excel
. Это максимально возможная попытка использования жестко закодированной формулы, которая зависит от нескольких переменных, таких как используемый шрифт, как отмечено в документации.
@TanmaySharma Что касается руководств, вы можете просмотреть некоторые базовые примеры и всю документацию по API
Пожалуйста, предоставьте минимально воспроизводимый пример. На данный момент этот код не генерирует упомянутую ошибку (
StyleFrame.Excelwriter
должно бытьStyleFrame.ExcelWriter
иset_column_width
не принимает аргументsheet_name
), поэтому трудно понять, что происходит в вашем реальном коде.