python - perplejo por condicionales pandas y / o indexación booleana

Tengo problemas con las indexaciones condicionales / booleanas. Estoy tratando de llenar un marco de datos (dfp) con lógica que está condicionada a los datos de un marco de datos de forma similar (dfs) más la fila anterior de sí mismo (dfp). Este es mi último fracaso ...

import pandas as pd
dfs = pd.DataFrame({'a':[1,0,-1,0,1,0,0,-1,0,0],'b':[0,1,0,0,-1,0,1,0,-1,0]})

In [171]: dfs
Out[171]: 
       a  b
    0  1  0
    1  0  1
    2 -1  0
    3  0  0
    4  1 -1
    5  0  0
    6  0  1
    7 -1  0
    8  0 -1
    9  0  0

dfp = pd.DataFrame(index=dfs.index,columns=dfs.columns)

dfp[(dfs==1)|((dfp.shift(1)==1)&(dfs!=-1))] = 1

In [166]: dfp.fillna(0)
Out[166]: 
     a    b
0  1.0  0.0
1  0.0  1.0
2  0.0  0.0
3  0.0  0.0
4  1.0  0.0
5  0.0  0.0
6  0.0  1.0
7  0.0  0.0
8  0.0  0.0
9  0.0  0.0

Entonces, me gustaría que dfp tenga un 1 en la fila n si se cumple alguna de las 2 condiciones:

1) dfs same row = 1 or 2) both dfp previous row = 1 and dfs same row <> -1

Me gustaría que mi salida final se vea así:

   a  b
0  1  0
1  1  1
2  0  1
3  0  1
4  1  0
5  1  0
6  1  1
7  0  1
8  0  0
9  0  0

ACTUALIZACIÓN / EDICIÓN: A veces, lo visual es más útil; a continuación se muestra cómo se trazaría en Excel.

Gracias de antemano, muy agradecido por su tiempo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta