2013-06-20 5 views
8

パンダでは、いくつかのプロパティを満たすエントリのシリーズ/データフレームのインデックスのリストを取得するにはどうすればよいですか?いくつかの基準を満たすインデックスを取得する

次戻り、このようになりますSeriesオブジェクト

my_dataframe.loc[:,'some_column'] == 'some_value' 

519  True 
509 False 
826 False 
503 False 
511 False 
512 False 
500 False 
507 False 
516  True 
504 False 
521 False 
510 False 
351 False 
522 False 
526 False 
517 False 
501 False 

しかし、私が欲しいのは二つのリスト、と

[519, 516] 

と1を有するものです残りの指標私はパンダでどうすればいいですか?

+0

itertools.filter(ラムダX:X [1]、(my_dataframe.locの[: 'somecolumn'] == 'some_value')を) – lucasg

答えて

10
In [8]: df = DataFrame(randn(10,2),columns=list('AB')) 

In [9]: df 
Out[9]: 
      A   B 
0 -1.046978 1.561624 
1 -0.264645 0.717171 
2 0.112354 -2.084449 
3 -1.243482 -1.183749 
4 1.055667 0.532444 
5 -1.295805 2.168225 
6 -1.239725 0.969934 
7 -0.354017 1.434943 
8 -0.867560 0.810315 
9 0.097698 -0.033039 

In [10]: df.loc[:,'B'] > 0 
Out[10]: 
0  True 
1  True 
2 False 
3 False 
4  True 
5  True 
6  True 
7  True 
8  True 
9 False 
Name: B, dtype: bool 

In [14]: x = df.loc[:,'B'] > 0 

Per Tom/Andy, much simpler 

In [33]: x[x].index 
Out[33]: Int64Index([0, 1, 4, 5, 6, 7, 8], dtype=int64) 

In [34]: x[~x].index 
Out[34]: Int64Index([2, 3, 9], dtype=int64) 
+0

Heh、あなたが投稿した後に編集しました。何らかの理由で、インデックス上で論理スライスの代わりに '.nonzero()'を使用していますか? – TomAugspurger

+0

...または 'x [〜x]' :) –

+0

最初に気がついたのは...変わります...あなたたちは正しいです – Jeff

3

@ジェフの例にわずかな変異体:

In [18]: df 
Out[18]: 
      A   B 
0 0.319489 1.
1 0.494205 -0.918240 
2 1.501922 -0.409661 
3 -1.593702 0.705407 
4 -0.735312 1.037567 
5 -0.201132 -0.673124 
6 1.237310 -0.877043 
7 -0.946714 0.984164 
8 -0.923548 0.415094 
9 0.135281 -0.199951 

In [14] list1 = df.index[df.loc[:, 'B'] > 0] 

In [15]: list1 
Out[15]: Int64Index([0, 3, 4, 7, 8], dtype=int64) 

In [16]: list2 = df.index - list1 

In [17]: list2 
Out[17]: Int64Index([1, 2, 5, 6, 9], dtype=int64) 
+0

'list1'はどうやって取得できますか?私が持っているのは、OPのように 'my_dataframe.loc [:、 'some_column'] == 'some_value''です。ありがとう、 –

+1

@ user815423426 doh申し訳ありません。貼り付けをコピーしたときにそれを逃した。今修正されました。あなたはまだ== some_valueをしています。重要な部分は、あなたがスライスしているインデックスです。 – TomAugspurger

関連する問題