Добавить общую строку в кадр данных Polars (в подмножество столбцов)Python

Программы на Python
Ответить
Anonymous
 Добавить общую строку в кадр данных Polars (в подмножество столбцов)

Сообщение Anonymous »

У меня есть следующий код:

Код: Выделить всё

import polars as pl

df = pl.DataFrame({
'name':      ['CHECK', 'CASH', 'BAR', 'SET'],
'category1': ['AM', 'EU', 'EU', 'AS'],
'category2': ['CA', 'FR', 'DE', 'CX'],
'quantity':  [100, -20, 10, -70],
'exposure':  [11, -3, 2, 8]
})
FLT_COLS   = ['quantity', 'exposure']
OTHER_COLS = [c for c in df.columns if c not in FLT_COLS]

df_temp = df.select(pl.col(FLT_COLS)).sum()\
.with_columns(pl.lit('TOTAL').alias(OTHER_COLS[0]))\
.with_columns([pl.lit('').alias(c) for c in OTHER_COLS[1:]])[df.columns]

pl.concat([df, df_temp])
что дает мне желаемый результат

Код: Выделить всё

shape: (5, 5)
┌───────┬───────────┬───────────┬──────────┬──────────┐
│ name  ┆ category1 ┆ category2 ┆ quantity ┆ exposure │
│ ---   ┆ ---       ┆ ---       ┆ ---      ┆ ---      │
│ str   ┆ str       ┆ str       ┆ i64      ┆ i64      │
╞═══════╪═══════════╪═══════════╪══════════╪══════════╡
│ CHECK ┆ AM        ┆ CA        ┆ 100      ┆ 11       │
│ CASH  ┆ EU        ┆ FR        ┆ -20      ┆ -3       │
│ BAR   ┆ EU        ┆ DE        ┆ 10       ┆ 2        │
│ SET   ┆ AS        ┆ CX        ┆ -70      ┆ 8        │
│ TOTAL ┆           ┆           ┆ 20       ┆ 18       │
└───────┴───────────┴───────────┴──────────┴──────────┘
То есть добавьте строку, содержащую общую сумму по определенному списку столбцов FLT_COLS, пометьте другой первый столбец TOTAL, а затем поместите "" в оставшиеся несуммированные столбцы.
Есть ли более удобный способ добавить эту строку? Я чувствую, что мой код выглядит очень неуклюже. Мне также не нравится, что мне приходится указывать [df.columns] для изменения порядка столбцов, поскольку это кажется очень неэффективным.

Подробнее здесь: https://stackoverflow.com/questions/788 ... of-columns
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»