Есть ли у Polars эквивалент numpy `select` для условного присвоения?Python

Программы на Python
Ответить
Anonymous
 Есть ли у Polars эквивалент numpy `select` для условного присвоения?

Сообщение Anonymous »

Мне интересно, есть ли способ обработать условное присваивание в кадре данных Polars без использования связанных с numpy.
import polars as pl
import numpy as np

df = pl.DataFrame({'team': ['A', 'A', 'A', 'B', 'B', 'C'],
'conference': ['East', 'East', 'East', 'West', 'West', 'East'],
'points': [11, 8, 10, 6, 6, 5],
'rebounds': [7, 7, 6, 9, 12, 8]})

shape: (6, 4)
┌──────┬────────────┬────────┬──────────┐
│ team ┆ conference ┆ points ┆ rebounds │
│ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ str ┆ i64 ┆ i64 │
╞══════╪════════════╪════════╪══════════╡
│ A ┆ East ┆ 11 ┆ 7 │
│ A ┆ East ┆ 8 ┆ 7 │
│ A ┆ East ┆ 10 ┆ 6 │
│ B ┆ West ┆ 6 ┆ 9 │
│ B ┆ West ┆ 6 ┆ 12 │
│ C ┆ East ┆ 5 ┆ 8 │
└──────┴────────────┴────────┴──────────┘

Используя numpy, мы могли бы сделать:
conditions = [
df['points'].le(6) & df['rebounds'].le(9),
df['points'].gt(10) & df['rebounds'].gt(6)
]
choicelist = ['Bad','Good']

df.with_columns(rating = np.select(conditions, choicelist, 'Aveg'))

shape: (6, 5)
┌──────┬────────────┬────────┬──────────┬────────┐
│ team ┆ conference ┆ points ┆ rebounds ┆ rating │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ str ┆ i64 ┆ i64 ┆ str │
╞══════╪════════════╪════════╪══════════╪════════╡
│ A ┆ East ┆ 11 ┆ 7 ┆ Good │
│ A ┆ East ┆ 8 ┆ 7 ┆ Aveg │
│ A ┆ East ┆ 10 ┆ 6 ┆ Aveg │
│ B ┆ West ┆ 6 ┆ 9 ┆ Bad │
│ B ┆ West ┆ 6 ┆ 12 ┆ Aveg │
│ C ┆ East ┆ 5 ┆ 8 ┆ Bad │
└──────┴────────────┴────────┴──────────┴────────┘


Подробнее здесь: https://stackoverflow.com/questions/741 ... assignment
Ответить

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

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

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

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

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