polars.DataFrame.rows_by_key
-
Возвращает все данные в виде словаря значений, нативных для Python, с ключами, заданными одним из столбцов.
Этот метод похож на
rows, но вместо возврата строк в виде плоского списка группирует строки по значениям столбца (столбцов)keyи возвращает их в виде словаря.Обратите внимание, что этот метод не следует использовать вместо нативных операций из-за высокой стоимости материализации всех данных фрейма в словарь; его следует применять только тогда, когда необходимо извлечь значения в структуру данных Python или другой объект, который не может работать непосредственно с Polars/Arrow.
- Параметры:
-
- key
-
Столбец (столбцы), используемый в качестве ключа возвращаемого словаря. Если указано несколько столбцов, ключом будет кортеж из этих значений, в противном случае — строка.
- named
-
Возвращать строки в виде словарей вместо кортежей, сопоставляя имя столбца со значением в строке.
- include_key
-
Включать значения ключа непосредственно в соответствующие данные (по умолчанию значения ключа опускаются для экономии памяти и повышения производительности, поскольку их можно восстановить по ключу).
- unique
-
Указать, что ключ уникален; в результате каждому ключу будет соответствовать одна строка. Обратите внимание: если ключ на самом деле не уникален, будет возвращена последняя строка с указанным ключом.
См. также
Примечания
Если у вас есть временные значения с точностью до
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}]})
DataFrame.rows_by_key(
key: ColumnNameOrSelector | Sequence[ColumnNameOrSelector],
*,
named: bool = False,
include_key: bool = False,
unique: bool = False,
) → dict[Any, Any]
© 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