Количество уникальных элементов в группе [дубликат]Python

Программы на Python
Ответить
Anonymous
 Количество уникальных элементов в группе [дубликат]

Сообщение Anonymous »

При наличии кадра данных, как мне подсчитать количество уникальных записей [несколько столбцов] в группе и вернуть результат в виде одного столбца?
Я хотел бы сделать что-то вроде этого:

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

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]
})

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

df.select(col("gender", "birth_dt").unique().count().over("ID")) # not quite what I want

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

shape: (8, 2)
┌────────┬──────────┐
│ gender ┆ birth_dt │
│ ---    ┆ ---      │
│ u32    ┆ u32      │
╞════════╪══════════╡
│ 2      ┆ 2        │
│ 2      ┆ 2        │
│ 2      ┆ 2        │
│ 2      ┆ 2        │
│ 1      ┆ 2        │
│ 1      ┆ 2        │
│ 1      ┆ 2        │
│ 1      ┆ 2        │
└────────┴──────────┘

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

df.group_by("ID").agg(col("gender", "birth_dt").n_unique()) # also not quite what I want

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

shape: (2, 3)
┌─────┬────────┬──────────┐
│ ID  ┆ gender ┆ birth_dt │
│ --- ┆ ---    ┆ ---      │
│ str ┆ u32    ┆ u32      │
╞═════╪════════╪══════════╡
│ B   ┆ 1      ┆ 2        │
│ A   ┆ 2      ┆ 2        │
└─────┴────────┴──────────┘
Однако функция unique() вызывается для каждого столбца индивидуально. Вместо этого я хотел бы вернуть количество уникальных комбинаций (пол, дата рождения) для каждого идентификатора.


Подробнее здесь: https://stackoverflow.com/questions/740 ... in-a-group
Ответить

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

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

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

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

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