Spec-Zone.ru › Polars

polars.DataFrame.rows_by_key

DataFrame.rows_by_key(
    key: ColumnNameOrSelector | Sequence[ColumnNameOrSelector],
    *,
    named: bool = False,
    include_key: bool = False,
    unique: bool = False,
) → dict[Any, Any]

Возвращает все данные в виде словаря значений, нативных для Python, с ключами, заданными одним из столбцов.

Этот метод похож на rows, но вместо возврата строк в виде плоского списка группирует строки по значениям столбца (столбцов) key и возвращает их в виде словаря.

Обратите внимание, что этот метод не следует использовать вместо нативных операций из-за высокой стоимости материализации всех данных фрейма в словарь; его следует применять только тогда, когда необходимо извлечь значения в структуру данных Python или другой объект, который не может работать непосредственно с Polars/Arrow.

Параметры:
key

Столбец (столбцы), используемый в качестве ключа возвращаемого словаря. Если указано несколько столбцов, ключом будет кортеж из этих значений, в противном случае — строка.

named

Возвращать строки в виде словарей вместо кортежей, сопоставляя имя столбца со значением в строке.

include_key

Включать значения ключа непосредственно в соответствующие данные (по умолчанию значения ключа опускаются для экономии памяти и повышения производительности, поскольку их можно восстановить по ключу).

unique

Указать, что ключ уникален; в результате каждому ключу будет соответствовать одна строка. Обратите внимание: если ключ на самом деле не уникален, будет возвращена последняя строка с указанным ключом.

См. также

rows

Материализовать все данные фрейма в виде списка строк (может быть затратной операцией).

iter_rows

Итератор строк данных фрейма (не материализует все строки).

to_dict

Преобразовать DataFrame в словарь, сопоставляющий имена столбцов со значениями.

Примечания

Если у вас есть временные значения с точностью до ns, имейте в виду, что Python изначально поддерживает точность только до μs; значения с точностью до ns при преобразовании в Python будут усечены до микросекунд. Если это важно для вашего сценария использования, следует экспортировать данные в другой формат (например, Arrow или NumPy).

Примеры

>>> df = pl.DataFrame(
...     {
...         "w": ["a", "b", "b", "a"],
...         "x": ["q", "q", "q", "k"],
...         "y": [1.0, 2.5, 3.0, 4.5],
...         "z": [9, 8, 7, 6],
...     }
... )

Сгруппировать строки по заданному столбцу (столбцам) ключа:

>>> df.rows_by_key(key=["w"])
defaultdict(<class 'list'>,
    {'a': [('q', 1.0, 9), ('k', 4.5, 6)],
     'b': [('q', 2.5, 8), ('q', 3.0, 7)]})

Вернуть те же группы строк в виде словарей:

>>> df.rows_by_key(key=["w"], named=True)
defaultdict(<class 'list'>,
    {'a': [{'x': 'q', 'y': 1.0, 'z': 9},
           {'x': 'k', 'y': 4.5, 'z': 6}],
     'b': [{'x': 'q', 'y': 2.5, 'z': 8},
           {'x': 'q', 'y': 3.0, 'z': 7}]})

Вернуть группы строк, предполагая, что ключи уникальны:

>>> df.rows_by_key(key=["z"], unique=True)
{9: ('a', 'q', 1.0),
 8: ('b', 'q', 2.5),
 7: ('b', 'q', 3.0),
 6: ('a', 'k', 4.5)}

Вернуть группы строк в виде словарей, предполагая, что ключи уникальны:

>>> df.rows_by_key(key=["z"], named=True, unique=True)
{9: {'w': 'a', 'x': 'q', 'y': 1.0},
 8: {'w': 'b', 'x': 'q', 'y': 2.5},
 7: {'w': 'b', 'x': 'q', 'y': 3.0},
 6: {'w': 'a', 'x': 'k', 'y': 4.5}}

Вернуть строки в виде словарей, сгруппированных по составному ключу, включая значения ключа:

>>> df.rows_by_key(key=["w", "x"], named=True, include_key=True)
defaultdict(<class 'list'>,
    {('a', 'q'): [{'w': 'a', 'x': 'q', 'y': 1.0, 'z': 9}],
     ('b', 'q'): [{'w': 'b', 'x': 'q', 'y': 2.5, 'z': 8},
                  {'w': 'b', 'x': 'q', 'y': 3.0, 'z': 7}],
     ('a', 'k'): [{'w': 'a', 'x': 'k', 'y': 4.5, 'z': 6}]})

© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/dataframe/api/polars.DataFrame.rows_by_key.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API