Как получить список индексов с определенными критериями в кадре данных? - PullRequest
0 голосов
/ 04 октября 2018

Например, у меня есть Dataframe с неотрицательными значениями, но отсутствующие значения были закодированы как отрицательные.Я хочу получить все эти индексы.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Вы можете рассчитать построчный минимум и проверить, не меньше ли он 0:

res = df.index[df.min(1) < 0]

# data from @jezrael    
# Int64Index([0, 1, 3, 5], dtype='int64')
0 голосов
/ 04 октября 2018

Используйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...