Создайте таблицу с помощью add_columns в таблице PrettyTable

#python #prettytable

Вопрос:

Я пытаюсь создать таблицу показателей производительности с помощью PrettyTable. Учитывая расположение таблицы, было бы лучше заполнить таблицу по столбцам, используя список показателей и список значений с add_column опцией. Однако, когда я пытаюсь это сделать, на выходе отображаются все значения списков в одной строке:

 from prettytable import PrettyTable
mse=123
mae=456
r2=789
performance_metrics=['Mean Squared Error', 'Mean Absolute Error', 'R-Squared']
values=[mse, mae, r2]
#CREATE TABLE
table = PrettyTable()
table.title = 'Model Performance'
column_names=['Metric', 'Value']
table.add_column(column_names[0],[performance_metrics])
table.add_column(column_names[1],[values])
print(table)

 ------------------------------------------------------------------------------ 
|                              Model Performance                               |
 ------------------------------------------------------------ ----------------- 
|                           Metric                           |      Value      |
 ------------------------------------------------------------ ----------------- 
| ['Mean Squared Error', 'Mean Absolute Error', 'R-Squared'] | [123, 456, 789] |
 ------------------------------------------------------------ ----------------- 
 

Как я могу исправить это, возможно, не прибегая к добавлению каждой строки самостоятельно?

ОБНОВЛЕНИЕ: Перечитывая вопрос, я понял, что забыл прикрепить желаемый вывод, который, очевидно, выглядит примерно следующим образом:

          ------------------------------------------------------------------------------ 
        |                              Model Performance                               |
         ------------------------------------------------------------ ----------------- 
        |                           Metric                           |      Value      |
         ------------------------------------------------------------ ----------------- 
        | Mean Squared Error                                         | 123             |
         ------------------------------------------------------------ ----------------- 
        | Mean Absolute Error                                        | 456             |
         ------------------------------------------------------------ -----------------           
        | R-Squared                                                  | 789             |          
         ------------------------------------------------------------ ----------------- 
 

Ответ №1:

Вы должны попробовать использовать цикл для этой операции, в данный момент вы добавляете весь список в один столбец:

 from prettytable import PrettyTable
mse=123
mae=456
r2=789
performance_metrics=['Mean Squared Error', 'Mean Absolute Error', 'R-Squared']
values=[mse, mae, r2]
#CREATE TABLE
table = PrettyTable()
table.title = 'Model Performance'
column_names=['Metric', 'Value']
table.field_names = [column_names[0], column_names[1]]
 

вам нужно использовать add_row, чтобы злоупотреблять умножением одних и тех же столбцов:

 for i in range(len(performance_metrics)):
    table.add_row([performance_metrics[i],values[i]])
print(table)
 

Выход:

  ----------------------------- 
|      Model Performance      |
 --------------------- ------- 
|        Metric       | Value |
 --------------------- ------- 
|  Mean Squared Error |  123  |
| Mean Absolute Error |  456  |
|      R-Squared      |  789  |
 --------------------- ------- 
 

Комментарии:

1. Понятно, я думал, что это было бы обработано автоматически с помощью add_column . Спасибо