При наличии кадра данных, как мне подсчитать количество уникальных записей [несколько столбцов] в группе и вернуть результат в виде одного столбца?
Я хотел бы сделать что-то вроде этого:
Однако функция unique() вызывается для каждого столбца индивидуально. Вместо этого я хотел бы вернуть количество уникальных комбинаций (пол, дата рождения) для каждого идентификатора.
При наличии кадра данных, как мне подсчитать количество уникальных записей [несколько столбцов] в группе и вернуть результат в виде одного столбца? Я хотел бы сделать что-то вроде этого: [code]from datetime import date
import polars as pl from polars import col
day1 = date(1982, 1, 14) day2 = date(1984, 8, 30) day3 = date(1992, 1, 8) day4 = date(1999, 12, 31) df = pl.DataFrame({ "ID": ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], "gender": ['M', 'M', 'F', 'F', 'M', 'M', 'M', 'M'], "birth_dt": [day1, day1, day2, day2, day3, day3, day4, day4] }) [/code] [code]df.select(col("gender", "birth_dt").unique().count().over("ID")) # not quite what I want [/code] [code]shape: (8, 2) ┌────────┬──────────┐ │ gender ┆ birth_dt │ │ --- ┆ --- │ │ u32 ┆ u32 │ ╞════════╪══════════╡ │ 2 ┆ 2 │ │ 2 ┆ 2 │ │ 2 ┆ 2 │ │ 2 ┆ 2 │ │ 1 ┆ 2 │ │ 1 ┆ 2 │ │ 1 ┆ 2 │ │ 1 ┆ 2 │ └────────┴──────────┘ [/code] [code]df.group_by("ID").agg(col("gender", "birth_dt").n_unique()) # also not quite what I want [/code] [code]shape: (2, 3) ┌─────┬────────┬──────────┐ │ ID ┆ gender ┆ birth_dt │ │ --- ┆ --- ┆ --- │ │ str ┆ u32 ┆ u32 │ ╞═════╪════════╪══════════╡ │ B ┆ 1 ┆ 2 │ │ A ┆ 2 ┆ 2 │ └─────┴────────┴──────────┘ [/code] Однако функция unique() вызывается для каждого столбца индивидуально. Вместо этого я хотел бы вернуть количество уникальных комбинаций (пол, дата рождения) для каждого идентификатора.