Я получаю сообщение об ошибке при попытке применить цвет к определенным столбцам при создании таблицы с помощью reportlab.
Вот весь мой сценарий для воспроизводимого примера (вам нужно будет указать путь вывода в строке 109):
Я получаю сообщение об ошибке при попытке применить цвет к определенным столбцам при создании таблицы с помощью reportlab. Вот весь мой сценарий для воспроизводимого примера (вам нужно будет указать путь вывода в строке 109): [code]import pandas as pd from datetime import datetime from reportlab.platypus import Frame from reportlab.lib.pagesizes import A4, landscape from reportlab.platypus import PageTemplate from reportlab.platypus import BaseDocTemplate from reportlab.platypus import Image from reportlab.lib.units import inch from reportlab.platypus import Table, Paragraph from reportlab.lib import colors from reportlab.platypus import NextPageTemplate, PageBreak from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
def format_nums(num): if num < 0: x = '(${:.2f})'.format(abs(num)) elif num > 0: x = '${:.2f}'.format(num) else: x = '${:.0f}'.format(num)
return x
def df2table(df, custom_style): for col in df.columns: if df[col].dtype == 'float64': df[col] = df[col].apply(lambda x: format_nums(x))
#('BACKGROUND', (start_col, start_row), (end_col, end_row), color) return Table( [[Paragraph(col, custom_style) for col in df.columns]] + df.values.tolist(), style = [ ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'), # Header font ('FONTSIZE', (0, 1), (-1, -1), 8), # Body font size ('TEXTCOLOR', (0, 0), (-1, 0), colors.white), # Header text color ('BACKGROUND', (0, 0), (-1, 0), colors.lightgrey), # Header background color ('BACKGROUND', (0, 0), (0, 0), colors.lightblue), # first Header background color ('BACKGROUND', (0, 1), (0, -1), colors.lightblue), # First column background color ('LINEBELOW', (0, 0), (-1, 0), 1, colors.black), # Line below header ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black), # Inner grid lines ('BOX', (0, 0), (-1, -1), 1, colors.black)], # Outer box hAlign = 'LEFT')
def df2table2(df, custom_style, commodity_cols): for col in df.columns: if df[col].dtype == 'float64': df[col] = df[col].apply(lambda x: format_nums(x))
data = [[Paragraph(col, custom_style) for col in df.columns]] + df.values.tolist()
# Apply colors based on column types for i, col in enumerate(df.columns): if col in commodity_cols: style.append(('BACKGROUND', (i, 1), (i, -1), colors.lightgrey)) # Commodity column else: if col != 'Counterparty': style.append(('BACKGROUND', (i, 1), (i, -1), colors.lightgreen)) # Aggregation column
# WORKING story = [ Paragraph('Title 1', styles['Title']), Paragraph('Tilte 2', styles['Title']), Paragraph("
", styles['Normal']), Paragraph('Current Total Positions', styles['Heading2']), df2table(out, custom_style) ]
doc.build(story) [/code] Моя проблема возникает в функции df2table2 где-то с полным сообщением об ошибке: [code]unsupported operand type(s) for -=: 'float' and 'tuple' [/code] Я смотрю на это уже несколько часов и не могу хоть убей понять, что, возможно, идет не так. Есть идеи, в чем может быть проблема?
Я получаю сообщение об ошибке при попытке применить цвет к определенным столбцам при создании таблицы с помощью reportlab.
Вот весь мой сценарий для воспроизводимого примера (вам нужно будет указать путь вывода в строке 109):
import pandas as pd...
У меня есть HTML-лист, который я создал для вымышленного бизнес-сайта в рамках задания на прошлой неделе для урока Интернет-ГИС. Мое задание на этой неделе (сдается сегодня вечером в 23:59 по московскому времени) — улучшить страницу двумя из четырех...
Очень нравится цепляться за поляры. Это почти похоже на dplyr в R. Вопрос: есть ли способ условно применить fill_null ко всем столбцам таблицы (т. е. заменить на 0 для числовых значений и на «0%» для str в приведенном ниже примере)? Как старый...
У меня есть сайт, к которому я добавляю некоторые функциональные возможности. Сайт немного устарел, но мне не платят за капитальный ремонт всего сайта, всего несколько страниц. Из -за этого я использую более современный код на этих страницах, но на...