С учетом следующего кадра данных:
col_1 col_2
False 1
False 1
False 1
False 1
False 1
False 1
False 1
False 1
False 1
False 1
False 1
False 1
False 1
False 1
False 2
True 2
False 2
False 2
True 2
False 2
False 2
False 2
False 2
False 2
False 2
False 2
False 2
False 2
False 2
False 2
Как я могу создать новый индекс, который поможет определить, когда значение True
присутствует в col_1
? То есть, когда в первом столбце появляется значение True
, я хотел бы заполнить в обратном направлении числом, начинающимся с одного нового столбца. Например, это ожидаемый вывод для указанного выше кадра данных:
col_1 col_2 new_id
False 1 1
False 1 1
False 1 1
False 1 1
False 1 1
False 1 1
False 1 1
False 1 1
False 1 1
False 1 1
False 1 1
False 1 1
False 1 1
False 1 1
False 2 1
True 2 1 --------- ^ (fill with 1 and increase the counter)
False 2 2
False 2 2
True 2 2 --------- ^ (fill with 2 and increase the counter)
False 2 3
False 2 3
False 2 3
False 2 3
False 2 3
False 2 3
False 2 3
False 2 3
False 2 3
False 2 3
False 2 3
True 2 4 --------- ^ (fill with 3 and increase the counter)
Проблема в том, что я не знаю, как создать идентификатор, хотя я знаю, что панды предоставляют объект bfill, который может помочь в достижении этой цели. До сих пор я пытался перебрать простой цикл for:
count = 0
for index, row in df.iterrows():
if row['col_1'] == False:
print(count+1)
else:
print(row['col_2'] + 1)
Однако я не знаю, как увеличить счетчик до следующего числа. Также я попытался создать функцию и затем применить ее к фрейму данных:
def create_id(col_1, col_2):
counter = 0
if col_1 == True and col_2.bool() == True:
return counter + 1
else:
pass
Тем не менее, я теряю контроль над заполнением обратной колонки.