Комбинация ffil и sum в кадре данных PandasPython

Программы на Python
Ответить
Anonymous
 Комбинация ffil и sum в кадре данных Pandas

Сообщение Anonymous »

Я столкнулся со следующей проблемой и был бы очень признателен за помощь. У меня есть следующий фрейм данных:

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

df = pd.DataFrame({'id': [1,1,1,1,1,1,1,2,2,2],
'date':['31.01.2012', '28.02.2012', '30.04.2012', '31.05.2012', '30.06.2012', '30.09.2012', '31.10.2012', '31.01.2012', '28.02.2012', '31.05.2023'],
"value": [0,0,1,0,0,1,0,0,0,1]})

df['date']=pd.to_datetime(df['date'])

#Output
id       date  value
0   1 2012-01-31      0
1   1 2012-02-28      0
2   1 2012-04-30      1
3   1 2012-05-31      0
4   1 2012-06-30      0
5   1 2012-09-30      1
6   1 2012-10-31      0
7   2 2012-01-31      0
8   2 2012-02-28      0
9   2 2023-05-31      1
Я хочу добиться следующего результата:

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

   id       date  value   goal
0   1 2012-01-31      0     0
1   1 2012-02-28      0     0
2   1 2012-04-30      1     1
3   1 2012-05-31      0     1
4   1 2012-06-30      0     1
5   1 2012-09-30      1     2
6   1 2012-10-31      0     2
7   2 2012-01-31      0     0
8   2 2012-02-28      0     0
9   2 2023-05-31      1     1
По сути, я хочу добавить 1 к цели, как только значение станет равным 1, плюс мне нужно обновить будущие переменные цели до того же значения.
Что я делаю? до сих пор пробовали, например:

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

df.sort_values(['id', 'date'], ascending=[True, True]).groupby(['id'])['value'].rolling(2).sum().rename('goal').reset_index()
Но это не дало мне желаемого результата, поскольку скользящая сумма добавляет только две строки (очевидно). Увеличение количества строк проблематично, поскольку каждый идентификатор имеет разное количество наблюдений. Таким образом, этот подход кажется тупиковым. Я подумываю о том, чтобы пройтись по группе и создать массу значений задержек, но надеюсь, что есть лучший подход. Кроме того, я подумал, что ffill может помочь в моей ситуации.
Буду признателен за помощь и надеюсь, что мой вопрос прояснится.
Заранее спасибо
Нина

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

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

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

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

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

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