Вот упрощенный пример моих кодов и скриншот результатов, которые я хочу получить в электронной таблице Google. Я надеюсь либо сохранить стиль фрейма данных в электронной таблице Google, либо применить стиль таблицы, чтобы преуспеть с использованием python. Или используйте gspread-форматирование, чтобы выделить фон ячейки, когда значение выше порогового значения.
Может ли кто-нибудь дать мне пример, как это сделать? Спасибо!
cars = {'Brand': ['Honda Civic','Ferrari','Toyota Corolla','Ford Focus','Audi A4','TESLA','Ford Fusion','BENZ'],
'Price': [22000,625000,25000,27000,35000,55000,28000,51000]}
df_car = pd.DataFrame(cars, columns = ['Brand', 'Price'])
def _color_if_above_budget(s):
return ['background-color: red' if val >50000 else '' for val in s]
s=df_car.style.apply(_color_if_above_budget, subset=['Price'])
ws=**worksheet
gd.set_with_dataframe(worksheet=ws,dataframe=df_car,include_index=False,include_column_header=True,resize=True)
По теме: github.com/robin900/…
Используйте gspread_dataframe
для установки данных на листы и gspread_formatting
для форматирования содержимого листов с условием.
Попробуйте этот код ниже:
import gspread
import pandas as pd
from gspread_dataframe import set_with_dataframe
from gspread_formatting import *
gc = gspread.service_account()
sh = gc.open("example").sheet1
cars = {'Brand': ['Honda Civic','Ferrari','Toyota Corolla','Ford Focus','Audi A4','TESLA','Ford Fusion','BENZ'],
'Price': [22000,625000,25000,27000,35000,55000,28000,51000]}
df_car = pd.DataFrame(cars, columns = ['Brand', 'Price'])
set_with_dataframe(sh, df_car)
rule = ConditionalFormatRule(
ranges=[GridRange.from_a1_range('B2:B', sh)],
booleanRule=BooleanRule(
condition=BooleanCondition('NUMBER_GREATER', ['50000']),
format=CellFormat(textFormat=textFormat(bold=True), backgroundColor=Color(1,0,0))
)
)
rules = get_conditional_format_rules(sh)
rules.append(rule)
rules.save()
Выход:
gspread-formatting (Условное форматирование)
это очень полезно! Спасибо. У меня есть вопрос по этому 'GridRange.from_a1_range('B2:B', sh)]'. есть ли способ использовать имя столбца, а не букву «B»? Поскольку мне нужно применить это условное форматирование ко многим столбцам, мне трудно назвать буквы («B», «AZ» или «CZ») для каждого столбца. Если нет, то можно ли определить, какие буквы соответствуют имени каждого столбца? Спасибо
К сожалению, ConditionalFormatRule принимает только GridRange в качестве значения для ranges
Ваш код не является минимальным воспроизводимым примером