获取满足某些条件的索引

Ame*_*ina 12 python pandas

在Pandas中,如何获得满足某些属性的条目的系列/数据框索引列表?

以下返回一个Series对象

my_dataframe.loc[:,'some_column'] == 'some_value'
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

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
Run Code Online (Sandbox Code Playgroud)

但我想要的是两个列表,一个列表

[519, 516]
Run Code Online (Sandbox Code Playgroud)

和其他指数一个.我怎么能在熊猫中做到这一点?

Jef*_*eff 13

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)
Run Code Online (Sandbox Code Playgroud)


Tom*_*ger 5

@Jeff 示例的一个细微变化:

In [18]: df
Out[18]: 
          A         B
0  0.319489  1.012319
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)
Run Code Online (Sandbox Code Playgroud)