Я пытаюсь создать новый столбец данных, который действует как бегущая переменная, которая сбрасывается в ноль или «проходит» при определенных условиях. Ниже приведен упрощенный пример того, чего я хочу достичь. Допустим, я пытаюсь бросить пить кофе и отслеживаю количество дней подряд, которые я провел, не выпив ни одного. В те дни, когда я забывал отмечать, пил ли я кофе, я ставил «забыл», и на мое подсчет не влияют.
Ниже я рассказываю, как я сейчас это делаю, хотя я подозреваю, что есть гораздо более эффективный способ сделать это.
Заранее спасибо!
import pandas as pd
Day = [1,2,3,4,5,6,7,8,9,10,11]
DrankCoffee = ['no','no','forgot','yes','no','no','no','no','no','yes','no']
df = pd.DataFrame(list(zip(Day,DrankCoffee)), columns=['Day','DrankCoffee'])
df['Streak'] = 0
s = 0
for (index,row) in df.iterrows():
if row['DrankCoffee'] == 'no':
s += 1
if row['DrankCoffee'] == 'yes':
s = 0
else:
pass
df.at[index,'Streak'] = s