Полярные поля – как извлечь последнее ненулевое значение в данном столбцеPython

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

Сообщение Anonymous »

Я хотел бы выполнить следующее:
Ввод:

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

df = pl.DataFrame({
"a": [1,15,None,20,None]
})
Выход:

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

df = pl.DataFrame({
"a": [1,15,None,20,None],
"b": [0,14,None,5,None]
})
То есть:



A



< tr>
1


15


Нет

< tr>
20


Нет


кому:



A
B




1
0


15
14


Нет
Нет

20
5


Нет
Нет



Итак, что он делает:
  • Если значение «A» равно нулю, то значение B (выходной столбец) также равно нулю.
  • Если «A» имеет какое-то значение, извлеките последнее ненулевое значение в «A», а затем вычесть текущее значение в «A» из предыдущего Ненулевое значение
Я хотел бы выполнить это в библиотеке фреймов данных Polars Python, но не могу найти решение.
Я попробовал следующий вопрос:
Как выбрать последнее ненулевое значение из одного столбца, а также значение из другого столбца в той же строке в Поларах?
Но, к сожалению, это не отвечает оригиналу проблема, поскольку вопрос выполняет агрегацию всего столбца, а затем принимает последнее значение этого столбца.
Я хотел бы не агрегировать весь столбец, а просто чтобы вычесть текущее значение из предыдущего ненулевого значения.
Я также пытался использовать прокрутку:

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

df = df.with_row_index().rolling(
index_column = 'index',
period = '???i').agg(pl.col("A").last())
Но, конечно, это не работает, потому что появление нулевых значений невозможно определить (т. е. оно не является периодическим, поэтому я не знаю, сколько индексов до того, как текущая запись будет содержать ненулевое значение в "A").
Кто-нибудь знает, как это сделать?
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/792 ... ven-column
Ответить

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

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

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

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

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