большое спасибо vara - я проголосовал за ваше решение, которое работало хорошо, дало точные результаты. результаты были немного медленнее, чем не скомпилированные выше.
я проблемы с условной / логической индексацией. Я пытаюсь заполнить фрейм данных (dfp) логикой, которая зависит от данных из фрейма данных аналогичной формы (dfs) плюс предыдущая строка самого себя (dfp). Это мой последний провал ...
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
Поэтому я хотел бы, чтобы dfp имел 1 в строке n, если выполняется любое из 2 условий:
1) dfs same row = 1 or 2) both dfp previous row = 1 and dfs same row <> -1
Я хотел бы, чтобы мой окончательный вывод выглядел так:
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
ОБНОВЛЕНИЕ / РЕДАКТИРОВАНИЕ: иногда визуальное представление более полезно - ниже показано, как оно будет отображаться в Excel.
Заранее спасибо, очень благодарен за ваше время.