In Pandas, how can I get a list of indices of a series/dataframe for the entries that satisfy some property?
The following returns a Series object
my_dataframe.loc[:,'some_column'] == 'some_value'
that looks like this:
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
but what I want is two lists, one with
[519, 516]
and one with the rest of indices. How can I do this in Pandas?
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With