Условно повторять значения в следующих строках на основе значений столбцаPython

Программы на Python
Ответить
Anonymous
 Условно повторять значения в следующих строках на основе значений столбца

Сообщение Anonymous »

Я хотел бы обновить значения столбцов «e» и «f» таким образом, чтобы, если столбец «diff» имеет значение «-1» или «1», затем присвоить значения столбцов «b» и «c» соответственно столбцу «e» и «f» для текущей строки, а также последующим строкам, пока значение столбца «diff» не изменится на «-1» или «1».
Ниже приведены входные данные.
/>

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

import polars as pl

df = pl.LazyFrame({
"a" : [0,1,2,3,4,5,6,7,8,9],
"b" : [234,34,43,6,343,76,67,23,878,12],
"c" : [934,23,1,34,2,87,23,698,65,56],
"d" : [1,1,0,0,0,0,1,1,1,1]
})
df = df.with_columns(pl.col('d').diff().alias('diff')).fill_null(0)

df.collect()

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

shape: (10, 5)
┌─────┬─────┬─────┬─────┬──────┐
│ a   ┆ b   ┆ c   ┆ d   ┆ diff │
│ --- ┆ --- ┆ --- ┆ --- ┆ ---  │
│ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64  │
╞═════╪═════╪═════╪═════╪══════╡
│ 0   ┆ 234 ┆ 934 ┆ 1   ┆ 0    │
│ 1   ┆ 34  ┆ 23  ┆ 1   ┆ 0    │
│ 2   ┆ 43  ┆ 1   ┆ 0   ┆ -1   │
│ 3   ┆ 6   ┆ 34  ┆ 0   ┆ 0    │
│ 4   ┆ 343 ┆ 2   ┆ 0   ┆ 0    │
│ 5   ┆ 76  ┆ 87  ┆ 0   ┆ 0    │
│ 6   ┆ 67  ┆ 23  ┆ 1   ┆ 1    │
│ 7   ┆ 23  ┆ 698 ┆ 1   ┆ 0    │
│ 8   ┆ 878 ┆ 65  ┆ 1   ┆ 0    │
│ 9   ┆ 12  ┆ 56  ┆ 1   ┆ 0    │
└─────┴─────┴─────┴─────┴──────┘

Я ищу такой результат.

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

final_df = df= pl.LazyFrame({
"a" : [0,1,2,3,4,5,6,7,8,9],
"b" : [234,34,43,6,343,76,67,23,878,12],
"c" : [934,23,1,34,2,87,23,698,65,56],
"d" : [1,1,0,0,0,0,1,1,1,1],
"e" : [234,34,43,43,43,43,67,67,67,67],
"f" : [934,23,1,1,1,1,23,23,23,23]
})
final_df.collect()

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

shape: (10, 6)
┌─────┬─────┬─────┬─────┬─────┬─────┐
│ a   ┆ b   ┆ c   ┆ d   ┆ e   ┆ f   │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 │
╞═════╪═════╪═════╪═════╪═════╪═════╡
│ 0   ┆ 234 ┆ 934 ┆ 1   ┆ 234 ┆ 934 │
│ 1   ┆ 34  ┆ 23  ┆ 1   ┆ 34  ┆ 23  │
│ 2   ┆ 43  ┆ 1   ┆ 0   ┆ 43  ┆ 1   │
│ 3   ┆ 6   ┆ 34  ┆ 0   ┆ 43  ┆ 1   │
│ 4   ┆ 343 ┆ 2   ┆ 0   ┆ 43  ┆ 1   │
│ 5   ┆ 76  ┆ 87  ┆ 0   ┆ 43  ┆ 1   │
│ 6   ┆ 67  ┆ 23  ┆ 1   ┆ 67  ┆ 23  │
│ 7   ┆ 23  ┆ 698 ┆ 1   ┆ 67  ┆ 23  │
│ 8   ┆ 878 ┆ 65  ┆ 1   ┆ 67  ┆ 23  │
│ 9   ┆ 12  ┆ 56  ┆ 1   ┆ 67  ┆ 23  │
└─────┴─────┴─────┴─────┴─────┴─────┘
Как лучше всего добиться этого с помощью API Polars?
Следующий вопрос «Повторять строки в кадре данных Polars на основе значения столбца», к сожалению, в моем случае не помогает.>

Подробнее здесь: https://stackoverflow.com/questions/778 ... umn-values
Ответить

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

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

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

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

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