在列中查找连续较大的值

时间:2017-01-15 00:33:29

标签: python pandas

假设我有一个数据框:

df = pd.DataFrame({'A':[5,4,7,8,1,2,3,4,5,7,8,9],'B':[1,2,2,2,2,5,9,8,8,10,11,10]})
print df

    A   B
0   5   1
1   4   2
2   7   2
3   8   2
4   1   2
5   2   5
6   3   9
7   4   8
8   5   8
9   7  10
10  8  11
11  9  10

我想在df.A中只找到连续较高的值,因此df会变为:

    A   B
0   5   1
2   7   2
3   8   2
11  9  10

这里最好的(读取最快)方式是什么;我尝试过一些相当复杂的东西,但是它实际上比整个帧的循环慢。

感谢。

1 个答案:

答案 0 :(得分:1)

此解决方案仅在B单调增长时才有效:

.

这个更通用:

df.cummax().drop_duplicates('A')
#    A   B 
#0   5   1 
#2   7   2 
#3   8   2 
#11  9  10