Начиная с определенных строк, как переносить их значения, пока не встретится строка с более высоким значением? - PullRequest
0 голосов
/ 08 декабря 2018

Предположим, серии панд и логическая маска, которая отмечает определенные строки.Исключить замаскированные значения, все остальные сортируются в порядке возрастания.Как замаскированные значения могут быть записаны в последующих строках, пока не будет достигнута строка с более высоким значением?

Меня особенно интересуют решения, в которых вместо обработки индексов строк используются только логические маски и методы pandas.Series.в явном виде.Большое спасибо!

Пример

Ввод:

values = pd.Series([0.1, 0.15, 0.29, 0.22, 0.24, 0.3, 0.46, 0.5, 0.52, 0.55, 0.81, 0.67, 0.7, 0.81, 0.84, 0.91, 0.93, 0.98, 1.])
mask = pd.Series([False, False, True, False, False, False, False, False, False, False, True, False, False, True, False, False, False, False, False])

Выход:

values = pd.Series([0.1, 0.15, 0.29, 0.29, 0.29, 0.3, 0.46, 0.5, 0.52, 0.55, 0.81, 0.81, 0.81, 0.81, 0.84, 0.91, 0.93, 0.98, 1.])

1 Ответ

0 голосов
/ 08 декабря 2018

pandas.Series имеет метод cummax:

values = pd.Series([0.1, 0.15, 0.29, 0.22, 0.24, 0.3, 0.46, 0.5, 0.52, 0.55, 0.81, 0.67, 0.7, 0.81, 0.84, 0.91, 0.93, 0.98, 1.])

values.cummax()

0     0.10
1     0.15
2     0.29
3     0.29
4     0.29
5     0.30
6     0.46
7     0.50
8     0.52
9     0.55
10    0.81
11    0.81
12    0.81
13    0.81
14    0.84
15    0.91
16    0.93
17    0.98
18    1.00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...