>>> pl.DataFrame([[1,2,3],[4,5,6],[7,8,9]],list('abc'))
shape: (3, 3)
┌─────┬─────┬─────┐
│ a ┆ b ┆ c │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 │
╞═════╪═════╪═════╡
│ 1 ┆ 4 ┆ 7 │
│ 2 ┆ 5 ┆ 8 │
│ 3 ┆ 6 ┆ 9 │
└─────┴─────┴─────┘
Обратите внимание, что ниже я специально спрашиваю о случае, когда столбцы «неважны», т.е. я ищу решение, которое не обязательно зависит от того, чтобы столбцы назывались a
code>, b и c или наличие определенного количества столбцов.
Я могу использовать следующее для обновления определенного столбца в определенной строке:
>>> pl.DataFrame([[1,2,3],[4,5,6],[7,8,9]],list('abc')).with_row_index().with_columns(a=pl.when(pl.col('index') == 1).then(42).otherwise(pl.col('a'))).drop('index')
shape: (3, 3)
┌─────┬─────┬─────┐
│ a ┆ b ┆ c │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 │
╞═════╪═════╪═════╡
│ 1 ┆ 4 ┆ 7 │
│ 42 ┆ 5 ┆ 8 │
│ 3 ┆ 6 ┆ 9 │
└─────┴─────┴─────┘
но это немного сложно, если я не знаю, что мне следует обновлять.
Как я могу сделать следующее :
- Заменить всю строку – например. Я хочу заменить вторую строку на 43,42,41:
│ a ┆ b ┆ c │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 │
╞═════╪═════╪═════╡
│ 1 ┆ 4 ┆ 7 │
│ 43 ┆ 42 ┆ 41 │
│ 3 ┆ 6 ┆ 9 │
└─────┴─────┴─────┘
- Замените любой столбец в определенной строке по условию - например. Я хочу инвертировать любые значения > 4 во второй строке:
│ a ┆ b ┆ c │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 │
╞═════╪═════╪═════╡
│ 1 ┆ 4 ┆ 7 │
│ 2 ┆ -5 ┆ -8 │
│ 3 ┆ 6 ┆ 9 │
└─────┴─────┴─────┘
Подробнее здесь: https://stackoverflow.com/questions/762 ... -in-polars