Ошибка типа: рамка стиля __init__ не поддерживает Styler

Итак, у меня есть фрейм данных с несколькими столбцами, и я конвертирую этот фрейм данных, чтобы преуспеть в своей первой функции — 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.Excelwriter должно быть StyleFrame.ExcelWriter и set_column_width не принимает аргумент sheet_name), поэтому трудно понять, что происходит в вашем реальном коде.

DeepSpace 15.07.2024 13:23

Я добавил свой полный код. Спасибо за ваш отзыв. Можете ли вы взглянуть сейчас, пожалуйста?

Tanmay Sharma 15.07.2024 14:02
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка связана с тем, что 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, поскольку моему проекту их потребуется много. Еще раз спасибо! Ты спаситель

Tanmay Sharma 16.07.2024 16:10

@TanmaySharma Вместо использования set_column_width передайте best_fit=['actual_prompt', 'expected_prompt'] на to_excel. Это максимально возможная попытка использования жестко закодированной формулы, которая зависит от нескольких переменных, таких как используемый шрифт, как отмечено в документации.

DeepSpace 16.07.2024 16:24

@TanmaySharma Что касается руководств, вы можете просмотреть некоторые базовые примеры и всю документацию по API

DeepSpace 16.07.2024 16:26

Другие вопросы по теме