Как игнорировать столбцы значений EMPTY/NULL при группировке в полях Python?Python

Программы на Python
Ответить
Anonymous
 Как игнорировать столбцы значений EMPTY/NULL при группировке в полях Python?

Сообщение Anonymous »

У меня есть фрейм данных.

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

df = pl.DataFrame({
'last_name':['James','Warner','Marino','James','Warner','Marino','James'],
'first_name':['Horn','Bro','Kach','Horn','Bro','Kach','Horn'],
'dob':['03/06/1990','09/16/1990','03/06/1990','','03/06/1990','','']
})
Я применяю группировку к столбцам «последний», «первый» и «dob», чтобы получить значения в виде

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

df.group_by('last_name','first_name','dob').len()

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

shape: (6, 4)
┌───────────┬────────────┬────────────┬─────┐
│ last_name ┆ first_name ┆ dob        ┆ len │
│ ---       ┆ ---        ┆ ---        ┆ --- │
│ str       ┆ str        ┆ str        ┆ u32 │
╞═══════════╪════════════╪════════════╪═════╡
│ Warner    ┆ Bro        ┆ 09/16/1990 ┆ 1   │
│ Marino    ┆ Kach       ┆ 03/06/1990 ┆ 1   │
│ Marino    ┆ Kach       ┆            ┆ 1   │
│ James     ┆ Horn       ┆            ┆ 2   │ # NOT OK
│ James     ┆ Horn       ┆ 03/06/1990 ┆ 1   │
│ Warner    ┆ Bro        ┆ 03/06/1990 ┆ 1   │
└───────────┴────────────┴────────────┴─────┘
Здесь я хотел бы игнорировать значения NULL/EMPTY в группирующих столбцах.
Поскольку у Джеймса Хорна есть два пустых DOB, их не следует включать в операцию группировки.
Вот ожидаемый результат.

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

shape: (4, 4)
┌───────────┬────────────┬────────────┬─────┐
│ last_name ┆ first_name ┆ dob        ┆ len │
│ ---       ┆ ---        ┆ ---        ┆ --- │
│ str       ┆ str        ┆ str        ┆ u32 │
╞═══════════╪════════════╪════════════╪═════╡
│ Warner    ┆ Bro        ┆ 03/06/1990 ┆ 1   │
│ James     ┆ Horn       ┆ 03/06/1990 ┆ 1   │
│ Marino    ┆ Kach       ┆ 03/06/1990 ┆ 1   │
│ Warner    ┆ Bro        ┆ 09/16/1990 ┆ 1   │
└───────────┴────────────┴────────────┴─────┘
Конечно, мы можем отфильтровать столбец, как показано ниже, прежде чем перейти к группировке как

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

df.filter(pl.col.dob != '').group_by('last_name','first_name','dob').len()
Но что, если мне нужно указать 10 столбцов в операции фильтра? Мне нужно писать их один за другим.
Есть ли другое решение?

Подробнее здесь: https://stackoverflow.com/questions/742 ... hon-polars
Ответить

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

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

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

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

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