El método pandas.Series.where permite filtrar los valores de una serie de forma que solo los que cumplan cierta condición se mantengan. Los valores que no la cumplan son sustituidos por un valor (NaN por defecto):
s = pd.Series(np.arange(0, 10))
s
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int32
Supongamos ahora que queremos filtrar los valores de s que sean pares:
s.where(s % 2 == 0)
0 0.0
1 NaN
2 2.0
3 NaN
4 4.0
5 NaN
6 6.0
7 NaN
8 8.0
9 NaN
dtype: float64
Comprobamos que los valores que no cumplen la condición son sustituidos por NaN. Podemos modificar este valor de reemplazo pasando al método como segundo argumento el valor que queremos fijar:
s.where(s % 2 == 0, -1)
0 0
1 -1
2 2
3 -1
4 4
5 -1
6 6
7 -1
8 8
9 -1
dtype: int32