polars pivot для dataframe
Сигнатура
> polars pivot {flags}
Флаги
-
--on, -o {any}: имена столбцов для сводной таблицы. -
--on-cols, -c {any}: имена столбцов, используемых в качестве столбцов значений -
--index, -i {any}: селектор или имена столбцов для индексов. -
--values {any}: селектор или имена столбцов, используемых в качестве столбцов значений. -
--aggregate, -a {any}: агрегатная функция, применяемая при создании сводной таблицы. Поддерживаются: first, sum, min, max, mean, median, count, last или пользовательское выражение. -
--separator, -p {string}: разделитель в сгенерированных именах столбцов при наличии нескольких столбцовvalues(по умолчанию '_'). -
--maintain-order: сохранять порядок. -
--streamable, -t: использовать ли потоковый движок polars. Допустимо только для ленивых фреймов данных -
--stable: выполнить стабильное преобразование в сводную таблицу.
Типы входных и выходных данных:
| вход | выход |
|---|---|
| polars_dataframe | polars_dataframe |
| polars_lazyframe | polars_lazyframe |
Примеры
Имея набор результатов тестов, изменим его форму так, чтобы каждой строке соответствовал один студент, предметы были представлены отдельными столбцами, а значения содержали результаты test_1
> {
"name": ["Cady", "Cady", "Karen", "Karen"],
"subject": ["maths", "physics", "maths", "physics"],
"test_1": [98, 99, 61, 58],
"test_2": [100, 100, 60, 60],
} |
polars into-df --as-columns |
polars pivot --on subject --on-cols [maths physics] --index name --values test_1 |
polars sort-by name maths physics |
polars collect
╭───┬───────┬───────┬─────────╮
│ # │ name │ maths │ physics │
├───┼───────┼───────┼─────────┤
│ 0 │ Cady │ 98 │ 99 │
│ 1 │ Karen │ 61 │ 58 │
╰───┴───────┴───────┴─────────╯
Имея набор результатов тестов, изменим его форму так, чтобы каждой строке соответствовал один студент, предметы были представлены отдельными столбцами, а значения содержали результаты test_1, не указывая --on-cols
> {
"name": ["Cady", "Cady", "Karen", "Karen"],
"subject": ["maths", "physics", "maths", "physics"],
"test_1": [98, 99, 61, 58],
"test_2": [100, 100, 60, 60],
} |
polars into-df --as-columns |
polars pivot --on subject --index name --values test_1 |
polars sort-by name maths physics |
polars collect
╭───┬───────┬───────┬─────────╮
│ # │ name │ maths │ physics │
├───┼───────┼───────┼─────────┤
│ 0 │ Cady │ 98 │ 99 │
│ 1 │ Karen │ 61 │ 58 │
╰───┴───────┴───────┴─────────╯
Имея набор результатов тестов, изменим его форму так, чтобы каждой строке соответствовал один студент, и используем селектор значений, включающий все результаты тестов
> {
"name": ["Cady", "Cady", "Karen", "Karen"],
"subject": ["maths", "physics", "maths", "physics"],
"test_1": [98, 99, 61, 58],
"test_2": [100, 100, 60, 60],
} |
polars into-df --as-columns |
polars pivot --on subject --on-cols [maths physics] --index name --values (polars selector starts-with test) |
polars sort-by name test_1_maths test_1_physics test_2_maths test_2_physics |
polars collect
╭───┬───────┬──────────────┬────────────────┬──────────────┬────────────────╮
│ # │ name │ test_1_maths │ test_1_physics │ test_2_maths │ test_2_physics │
├───┼───────┼──────────────┼────────────────┼──────────────┼────────────────┤
│ 0 │ Cady │ 98 │ 99 │ 100 │ 100 │
│ 1 │ Karen │ 61 │ 58 │ 60 │ 60 │
╰───┴───────┴──────────────┴────────────────┴──────────────┴────────────────╯
Если DataFrame содержит повторяющиеся записи для столбцов сводной таблицы, используйте флаг aggregate, чтобы указать, как агрегировать значения этих записей. В этом примере мы суммируем значения foo и bar для строк с одинаковыми значениями ix и col.
> {
"ix": [1, 1, 2, 2, 1, 2],
"col": ["a", "a", "a", "a", "b", "b"],
"foo": [0, 1, 2, 2, 7, 1],
"bar": [0, 2, 0, 0, 9, 4],
} |
polars into-df --as-columns |
polars pivot --on col --on-cols [a b] --index ix --aggregate sum |
polars sort-by ix foo_a foo_b bar_a bar_b |
polars collect
╭───┬────┬───────┬───────┬───────┬───────╮
│ # │ ix │ foo_a │ foo_b │ bar_a │ bar_b │
├───┼────┼───────┼───────┼───────┼───────┤
│ 0 │ 1 │ 1 │ 7 │ 2 │ 9 │
│ 1 │ 2 │ 4 │ 1 │ 0 │ 4 │
╰───┴────┴───────┴───────┴───────┴───────╯
Copyright © 2019–2026 The Nushell Project DevelopersLicensed under the MIT License.
https://www.nushell.sh/commands/docs/polars_pivot.html