2016-11-25 24 views

回答

7

您可以通过自定义Series使用groupby

df = pd.DataFrame({'a': [1, 1, -1, 1, -1, -1]}) 
print (df) 
    a 
0 1 
1 1 
2 -1 
3 1 
4 -1 
5 -1 

print ((df.a != df.a.shift()).cumsum()) 
0 1 
1 1 
2 2 
3 3 
4 4 
5 4 
Name: a, dtype: int32 
for i, g in df.groupby([(df.a != df.a.shift()).cumsum()]): 
    print (i) 
    print (g) 
    print (g.a.tolist()) 

    a 
0 1 
1 1 
[1, 1] 
2 
    a 
2 -1 
[-1] 
3 
    a 
3 1 
[1] 
4 
    a 
4 -1 
5 -1 
[-1, -1] 
+3

什么是聪明的家伙 –

+0

非常感谢你。它是如何工作的? – jezrael

+0

正是我需要的。谢谢。 –