IIUC, следующее;
Создайте столбец 'C' и заполните nan
's:
df['C'] = np.nan
количество последовательных вхождений' осадков '<0,04 в столбце' C_: </p>
def rolling_count(val):
if val < 0.04:
rolling_count.count +=1
else:
rolling_count.count = 0
return rolling_count.count
rolling_count.count = 0
df['C_'] = df['precipitation'].apply(rolling_count)
заполните столбец 'C' '1', где первый '4' найден, а остальные заполните в обратном направлении 3:
df.loc[df[df['C_'] == 4].head(1).index.item(), 'C'] = 1
df['C'] = df['C'].fillna(method = 'bfill', limit = 3)
df['C'] = df['C'].fillna(0)
df['C'] = df['C'].astype(int)
df
temperature precipitation C C_
0 1.26 0.0279 0 1
1 1.64 0.0330 0 2
2 1.98 0.0381 0 3
3 2.31 0.0406 0 0
4 2.61 0.0406 0 0
5 2.89 0.0381 1 1
6 3.15 0.0356 1 2
7 3.51 0.0305 1 3
8 3.78 0.0305 1 4
9 3.78 0.0305 0 5
Примечание;этот результат отличается от того, что показывает ваш пример, но IIUC вам нужно найти 4 последовательных строки ниже 0,04 и заполнить «C».Проблема в том, что у вас есть значение «0.0406», заполненное «1» в «C», которое не ниже 0,04.