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