2017-10-12 9 views
0

初心者の質問です。パンダで値の範囲を選択する方法は?

私のデータフレームは、次のようになります。

 class A   B 
0   1 3.767809 11.016 
1   1 2.808231 4.500 
2   1 4.822522 1.008 
3   2 5.016933 -3.636 
4   2 6.036203 -5.220 
5   2 7.234567 -6.696 
6   2 5.855065 -7.272 
7   4 4.116770 -8.208 
8   4 2.628000 -10.296 
9   4 1.539184 -10.728 
10  3 0.875918 -10.116 
11  3 0.569210 -9.072 
12  3 0.676379 -7.632 
13  3 0.933921 -5.436 
14  3 0.113842 -3.276 
15  3 0.367129 -2.196 
16  1 0.968661 -1.980 
17  1 0.160997 -2.736 
18  1 0.469383 -2.232 
19  1 0.410463 -2.340 
20  1 0.660872 -2.484 

のように私は、クラスが同じであるグループを取得したいと思います。その理由は、その順序が重要である

class 1: rows 0..2 
class 2: rows 3..6 
class 4: rows 7..9 
class 3: rows 10..15 
class 1: rows 16..20 

。私がそのクラス4が必要とする条件は、12の間にしかありません。の後にクラス4を予測すると、それは2とみなされます。

答えて

2

グループに

df['group']=df['class'].diff().ne(0).cumsum() 

df.groupby('group')['group'].apply(lambda x : x.index) 
Out[106]: 
group 
1     Int64Index([0, 1, 2], dtype='int64') 
2    Int64Index([3, 4, 5, 6], dtype='int64') 
3     Int64Index([7, 8, 9], dtype='int64') 
4 Int64Index([10, 11, 12, 13, 14, 15], dtype='in... 
5  Int64Index([16, 17, 18, 19, 20], dtype='int64') 
Name: group, dtype: object 
+0

を識別するために、新しいパラを構築するには、ありがとうございました!ちょっとした質問 - どのクラスがグループに属しているかをどのように知ることができますか? –

+1

@AleksandrK。元のdfを 'merge'することができます – Wen

関連する問題