a 1
a 2
a 3
b 3
b 4
a 3
b 5
b 6
b 4
b 10
b 11
a 10
b 2
b 3
忽略a直到b发生变化。仅考虑将b更改为a的组,并获得该组的最大值?
最终输出
a 1
a 2
a 3
b 4
b 11
a 10
即 b是第一组的最大值 b是第二组的最大值 a是第三组的最大值
答案 0 :(得分:1)
使用shift
和cumsum
和eq
创建组密钥,然后使用groupby
sort_values
+ tail
m=(df.C1.shift().ne(df.C1)&df.C1.eq('a')).cumsum()
df.sort_values('C2').groupby(m).tail(1)
Out[62]:
C1 C2
4 b 4
11 a 10
10 b 11
然后我们使用concat
s1=df.sort_values('C2').groupby(m).tail(1)
s2=df.loc[(df.C1=='a')&(m==1)]
pd.concat([s1,s2]).sort_index()
Out[71]:
C1 C2
0 a 1
1 a 2
2 a 3
4 b 4
10 b 11
11 a 10