Используйте boolean indexing
с df.index
:
df = pd.DataFrame({
'B':[-4,5,4,5,5,-4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,-7,1,0],
'E':[5,-3,6,9,2,4],
})
print (df)
B C D E
0 -4 7 1 5
1 5 8 3 -3
2 4 9 5 6
3 5 4 -7 9
4 5 2 1 2
5 -4 3 0 4
idx = df.index[df.lt(0).any(axis=1)]
print (idx)
Int64Index([0, 1, 3, 5], dtype='int64')
Объяснение :
Сначала сравните все значения с помощью DataFrame.lt
(<
):
(аналогичные функции gt
, le
, ge
, ne
, eq
)
print (df.lt(0))
B C D E
0 True False False False
1 False False False True
2 False False False False
3 False False True False
4 False False False False
5 True False False False
И затем проверьте по крайней мере одно значение True
в строке на DataFrame.any
:
print (df.lt(0).any(axis=1))
0 True
1 True
2 False
3 True
4 False
5 True
dtype: bool