Как реализовать предыдущую функциональность «pivot()» Polars до версии 0.20.7?Python

Программы на Python
Ответить
Anonymous
 Как реализовать предыдущую функциональность «pivot()» Polars до версии 0.20.7?

Сообщение Anonymous »

В версии Polars 0.20.7 метод Pivot(), если для аргумента columns задано несколько значений, применял логику агрегирования к каждому столбцу в столбцах индивидуально на основе индексного столбца, а не к коллективному набору столбцов.
До:

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

df = pl.DataFrame(
{
"foo": ["one", "one", "two", "two", "one", "two"],
"bar": ["y", "y", "y", "x", "x", "x"],
"biz": ['m', 'f', 'm', 'f', 'm', 'f'],
"baz": [1, 2, 3, 4, 5, 6],
}
)

df.pivot(index='foo', values='baz', columns=('bar', 'biz'), aggregate_function='sum')
возвращает:

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

shape: (2, 5)
┌─────┬─────┬─────┬─────┬─────┐
│ foo ┆ y   ┆ x   ┆ m   ┆ f   │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ i64 ┆ i64 ┆ i64 ┆ i64 │
╞═════╪═════╪═════╪═════╪═════╡
│ one ┆ 3   ┆ 5   ┆ 6   ┆ 2   │
│ two ┆ 3   ┆ 10  ┆ 3   ┆ 10  │
└─────┴─────┴─────┴─────┴─────┘
После (в 0.20.7):

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

shape: (2, 5)
┌─────┬───────────┬───────────┬───────────┬───────────┐
│ foo ┆ {"y","m"} ┆ {"y","f"} ┆ {"x","f"} ┆ {"x","m"} │
│ --- ┆ ---       ┆ ---       ┆ ---       ┆ ---       │
│ str ┆ i64       ┆ i64       ┆ i64       ┆ i64       │
╞═════╪═══════════╪═══════════╪═══════════╪═══════════╡
│ one ┆ 1         ┆ 2         ┆ null      ┆ 5         │
│ two ┆ 3         ┆ null      ┆ 10        ┆ null      │
└─────┴───────────┴───────────┴───────────┴───────────┘
Предыдущий функционал мне нравится гораздо больше; очень неудобно иметь дело с новой сводной таблицей, особенно с учетом имен ее столбцов. Разработчики Polars поместили это изменение в раздел «Исправление ошибок», но оно фактически сломало мой код.

Подробнее здесь: https://stackoverflow.com/questions/779 ... pre-0-20-7
Ответить

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

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

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

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

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