Как в np.where обратиться к своему предыдущему значению?

Таблица:

| Curr | Prev |
| --- | --- |
| 174 | 181 |
| 174 | 174 |
| 174 | 174 |
| 174 | 174 |
| 174 | 174 |
| 174 | 174 |
| 183 | 174 |
| 183 | 183 |
| 183 | 183 |
| 183 | 183 |
| 177 | 183 |
| 177 | 177 |
| 177 | 177 |
| 177 | 177 |
| 177 | 177 |
| 177 | 177 |
| 177 | 177 |
| 177 | 177 |
| 177 | 177 |
| 177 | 177 |
| 184 | 177 |
| 184 | 184 |
| 184 | 184 |
| 184 | 184 |
| 184 | 184 |
| 184 | 184 |
| 184 | 184 |
| 184 | 184 |
| 184 | 184 |
| 184 | 184 |

Код:

x=pd.np.where(Location['Curr']>Location['Prev'],Location['Curr'],#x[-1])

Как в np.where обратиться к своему предыдущему значению (x[-1])?

Хочу получить наподобие этого:

A=[]   
for i in range(1,len(Location)):          
    if Location['Curr'].iloc[i]>Location['Prev'].iloc[i]:
        A.append(Location['Curr'].iloc[i])
    else:
        if len(A)>0:
            A.append(A[-1])

Ответы (1 шт):

Автор решения: strawdog

Если я правильно понял вопрос, то, вероятно, такое решение будет работать:

res = Location.copy()
res.loc[1:,"Curr"] = res.loc[1:,"Curr"].where(df["Curr"]>df["Prev"], np.nan, axis=0)
res["Curr"] = res["Curr"].fillna(method="ffill")

res:

     Curr  Prev
0   174.0   181
1   174.0   174
2   174.0   174
3   174.0   174
4   174.0   174
5   174.0   174
6   183.0   174
7   183.0   183
8   183.0   183
9   183.0   183
10  183.0   183
11  183.0   177
12  183.0   177
13  183.0   177
14  183.0   177
15  183.0   177
16  183.0   177
17  183.0   177
18  183.0   177
19  183.0   177
20  184.0   177
21  184.0   184
22  184.0   184
23  184.0   184
24  184.0   184
25  184.0   184
26  184.0   184
27  184.0   184
28  184.0   184
29  184.0   184
→ Ссылка