Сместить значения в датафрйме по условию
Файл https://wdho.ru/e6oh
В датафрейме есть столбы min и max - они находят минимумы и максимумы в столбцах min_m и max_m. Но значения в min и max находятся на строках где условия было выполнено. Хочу сместить значения до строки с первым попавшимся "0" в столбцах min и max. Было:
А нужно чтобы значение оказалось так:
Тоесть вместо
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
Я вам предложу новое решение на вашем старом примере, где df был
Date for_max for_min
0 1-Mar-00 0.00 0.0
1 2-Mar-00 29.47 0.0
2 3-Mar-00 29.28 0.0
3 6-Mar-00 29.69 0.0
4 7-Mar-00 31.95 0.0
... и т. д.
Теперь будет искать минимумы и максимумы и писать их в нужную позицию немного по-другому:
df["max"] = np.nan
for i, g in df[df["for_max"] != 0].groupby((df["for_max"] == 0).cumsum()):
df.at[g.index[-1]+1, "max"] = g["for_max"].max()
df["min"] = np.nan
for i, g in df[df["for_min"] != 0].groupby((df["for_min"] == 0).cumsum()):
df.at[g.index[-1]+1, "min"] = g["for_min"].min()
df.fillna(0, inplace=True)
Теперь ваш будет:
Date for_max for_min max min
0 1-Mar-00 0.00 0.00 0.00 0.00
1 2-Mar-00 29.47 0.00 0.00 0.00
2 3-Mar-00 29.28 0.00 0.00 0.00
3 6-Mar-00 29.69 0.00 0.00 0.00
4 7-Mar-00 31.95 0.00 0.00 0.00
5 8-Mar-00 0.00 0.00 31.95 0.00
6 4-Dec-00 0.00 0.00 0.00 0.00
7 5-Dec-00 0.00 0.00 0.00 0.00
8 6-Dec-00 0.00 0.00 0.00 0.00
9 7-Dec-00 0.00 27.20 0.00 0.00
10 8-Dec-00 0.00 26.13 0.00 0.00
11 20-Dec-00 0.00 22.90 0.00 0.00
12 21-Dec-00 0.00 23.40 0.00 0.00
13 22-Dec-00 0.00 23.51 0.00 0.00
14 27-Dec-00 0.00 23.94 0.00 0.00
15 28-Dec-00 0.00 23.63 0.00 0.00
16 29-Dec-00 0.00 0.00 0.00 22.90
17 2-Jan-01 0.00 0.00 0.00 0.00
18 22-Feb-01 0.00 0.00 0.00 0.00
19 23-Feb-01 0.00 0.00 0.00 0.00
20 26-Feb-01 0.00 0.00 0.00 0.00
21 5-Nov-01 0.00 19.16 0.00 0.00
22 6-Nov-01 0.00 18.81 0.00 0.00
23 7-Nov-01 0.00 0.00 0.00 18.81
... и т.д.



