Предположим, у меня есть Polars df:
import polars as pl
df = pl.DataFrame({'name': ['a', 'a', 'b', 'b'],
'found': ['yes', 'no', 'no', 'no'],
'found_in_iteration': ['1', 'not_found', 'not_found', 'not_found']})
(Этот df был сгенерирован за две итерации, и для a некоторые данные были найдены в первой, но не во второй, а для b данные не были найдены ни на одной итерации.) Нет, я хочу сохранить только те строки, где данные были найдены, но если для одного имени данные не были найдены вообще, я хочу сохранить эту информацию, чтобы она не была найдена ни разу. Последнее довольно легко выполнимо с помощью unique(), но как мне избавиться от строки a,no, если a,yes существует. Решение должно быть пригодным для использования даже после большего количества итераций, как здесь:
df = pl.DataFrame({'name': ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'],
'found': ['yes', 'no', 'yes', 'no', 'no', 'no', 'no', 'yes', 'no'],
'found_in_iteration': ['1', 'not_found', '3', 'not_found', 'not_found', 'not_found', 'not_found', '2', 'not_found']})
Здесь a был найден в двух итерациях, b не найден вообще и c был найден в одной. Здесь для a должны быть сохранены оба столбца с найденным == да, для c должен быть сохранен один столбец с найденным == да, а для b должен быть сохранен один столбец с найденным == no. Итак, это:
shape: (9, 3)
┌──────┬───────┬────────────────────┐
│ name ┆ found ┆ found_in_iteration │
│ --- ┆ --- ┆ --- │
│ str ┆ str ┆ str │
╞══════╪═══════╪════════════════════╡
│ a ┆ yes ┆ 1 │
│ a ┆ no ┆ not_found │
│ a ┆ yes ┆ 3 │
│ b ┆ no ┆ not_found │
│ b ┆ no ┆ not_found │
│ b ┆ no ┆ not_found │
│ c ┆ no ┆ not_found │
│ c ┆ yes ┆ 2 │
│ c ┆ no ┆ not_found │
└──────┴───────┴────────────────────┘
следует свести к следующему:
shape: (9, 3)
┌──────┬───────┬────────────────────┐
│ name ┆ found ┆ found_in_iteration │
│ --- ┆ --- ┆ --- │
│ str ┆ str ┆ str │
╞══════╪═══════╪════════════════════╡
│ a ┆ yes ┆ 1 │
│ a ┆ yes ┆ 3 │
│ b ┆ no ┆ not_found │
│ c ┆ yes ┆ 2 │
└──────┴───────┴────────────────────┘
Подробнее здесь: https://stackoverflow.com/questions/795 ... -column-an