Добавить предыдущее значение при выполнении условия в цикле python, pandas
требуется получить предыдущее значение колонки С + 1 , если колонка B > 1 иначе, предыдущее значение колонки С. Первое значение в колонки С = 1. Как я делал:
df = pd.DataFrame({"a":[1,2,3,4,5,6,7,8,9,10,11],"b":[0,5,1,0,1,0,6,0,2,0,0]})
df.loc[df1['a'] == df['a'].min(),'c'] = 1
for i in df1['b']:
if i>1:
df['c'] = df['c'].shift(1).fillna(0).astype(int)+1
else:
df['c'] = df['c'].shift(1).fillna(0).astype(int)
df['c']= df['c'] + 1
df
Результат:
a b c
0 1 0 1
1 2 5 1
2 3 1 2
3 4 0 2
4 5 1 3
5 6 0 3
6 7 6 3
7 8 0 3
8 9 2 3
9 10 0 4
10 11 0 4
Верный результат:
a b c
0 1 0 1
1 2 5 2
2 3 1 2
3 4 0 2
4 5 1 2
5 6 0 2
6 7 6 3
7 8 0 3
8 9 2 4
9 10 0 4
10 11 0 4
Можно рассмотреть другие варианте, без циклов. Спасибо за ответ.
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
df = pd.DataFrame({"a":[1,2,3,4,5,6,7,8,9,10,11],"b":[0,5,1,0,1,0,6,0,2,0,0]})
df['c'] = (df['b'].gt(1)).astype(int)
df['c'] = df['c'].cumsum().add(1)
результат:
a b c
0 1 0 1
1 2 5 2
2 3 1 2
3 4 0 2
4 5 1 2
5 6 0 2
6 7 6 3
7 8 0 3
8 9 2 4
9 10 0 4
10 11 0 4