Как я могу найти индекс строк точно так же, как массив из кадра данных pandas? - PullRequest
1 голос
/ 03 июня 2019

Я хочу найти индексы некоторых строк, такие же, как массив в панде dataframe.

Мой фрейм данных как ниже

df = pd.DataFrame({'a':[True, False, True, True],'b':[False, True, True, True],'c':[True, True, False, True],'d':[True, False, True, False]})

вводимое значение будет похоже на row = [True, True, False, True], и я хочу получить [2].

Я пробовал с некоторыми, как это

index = []
for i in range df.shape[0]:
    if df.iloc[i,:].tolist() == row
        index.append(i)

Это работает, но очень медленно для моей работы. Есть ли способ для этого?

1 Ответ

4 голосов
/ 03 июня 2019

Использование DataFrame.eq и Series.all:

df[df.eq(row).all(1)]

Пример

df = pd.DataFrame({'a':[True, False, True, True],'b':[False, True, True, True],'c':[True, True, False, True],'d':[True, False, True, False]})
row = [True, True, False, True]

df[df.eq(row).all(1)]

[out]

      a     b      c     d
2  True  True  False  True 

При необходимости включите index.to_list() для списка индексов:

df[df.eq(row).all(1)].index.to_list()

[2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...