Как выделить значения в столбце в PolarsPython

Программы на Python
Ответить
Anonymous
 Как выделить значения в столбце в Polars

Сообщение Anonymous »

У меня есть DataFrame Polars, и я хочу выделить 3 верхних значения для каждого столбца, используя стиль и функции loc в Polars. Я могу добиться этого для отдельных столбцов, но мой текущий подход предполагает большое количество повторений, которые невозможно масштабировать для многих переменных.

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

import polars as pl
import polars.selectors as cs
from great_tables import loc, style

df = pl.DataFrame({
"id": [1, 2, 3, 4, 5],
"variable1": [15, 25, 5, 10, 20],
"variable2": [40, 30, 50, 10, 20],
"variable3": [400, 100, 300, 200, 500]
})

top3_var1 = pl.col("variable1").is_in(pl.col("variable1").top_k(3))
top3_var2 = pl.col("variable2").is_in(pl.col("variable2").top_k(3))

(
df
.style
.tab_style(
style.text(weight="bold"),
loc.body("variable1", top3_var1)
)
.tab_style(
style.text(weight="bold"),
loc.body("variable2", top3_var2)
)
)
Это работает, но его невозможно масштабировать для многих столбцов, поскольку мне приходится вручную определять top3_var для каждого столбца.
У меня есть попробовал использовать pl.all().top_k(3), чтобы сделать процесс более автоматическим:

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

(
df
.style
.tab_style(
style.text(weight="bold",   ),
loc.body("variable1", top3_var1)
)
.tab_style(
style.text(weight="bold"),
loc.body("variable2", top3_var2)
)
)
Однако я не уверен, как применить методы style и loc, чтобы выделить только три верхних значения в каждом столбце по отдельности, не затрагивая всю строку.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-polars
Ответить

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

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

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

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

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