python - atropelado por condicionais de pandas e / ou indexação booleana
Estou tendo problemas com a condicionalidade / indexação booleana. Eu estou tentando preencher um quadro de dados (dfp) com lógica que depende de dados de um quadro de dados de formato semelhante (dfs) mais a linha anterior em si (dfp). Esta é a minha última falha ...
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
Então, eu gostaria que o dfp tivesse 1 na linha n se uma das 2 condições for atendida:
1) dfs same row = 1 or 2) both dfp previous row = 1 and dfs same row <> -1
Gostaria que minha saída final fosse assim:
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
ATUALIZAÇÃO / EDIÇÃO: Às vezes, o visual é mais útil - abaixo, como ele seria mapeado no Excel.
Agradecemos antecipadamente, muito grato pelo seu tempo.