从特定的行开始,如何继续其值,直到遇到具有较高值的​​行?

时间:2018-12-08 17:14:09

标签: python pandas sorting

假设有一个熊猫系列和一个标记某些行的布尔型掩码。排除掩码值,所有其他值均按升序排序。屏蔽的值如何写入后续的行中,直到遇到具有较高值的​​行?

我对仅使用布尔掩码和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 :(得分:1)

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