Получить пару (индекс, столбец) на основе значения в строке - PullRequest
2 голосов
/ 09 ноября 2019

У меня есть фрейм данных в этом формате

       A    B     C      D

1      a    a     c      c 
2      c    b     a      a 
3      b    a     c      a
.
.
.

Я хочу получить все пары (индекс, столбец) на основе определенного значения строки, используя операции фрейма данных. Все пары (индекс, столбец, значение строки) будут уникальными.

Я искал этот вопрос: Питонический способ получения индекса, столбец для значения == 1

Хотя этот вопрос точно такой же, как и у меня, принятый ответ на этот вопрос довольно расплывчатый, и я не мог получить то, что искал, основываясь на этих ответах.

Я также искал похожие ответы:

a) Выберите конкретный индекс, пары столбцов в панде.

b) Python Pandas: Получить индекс строк, столбец которых соответствует определенному значению

Я попробовал это:

req_cols = df.columns [ ( new_df == "a" ).any() ]

req_inds = (df == "a").index

Мне удалось получить значения индекса и значения столбцов по отдельности, но я не понял, как правильно их объединить.

Если я выберу значение строки«а» я ожидал получить [(1,A), (1,B) , (2,C), (2,D), (3,B), (3,D)]

Любая помощь высоко ценится. ТИА.

1 Ответ

1 голос
/ 09 ноября 2019

В одну сторону с where и stack:

df.where(df.eq('a')).stack().index.values

Выход:

array([(1, 'A'), (1, 'B'), (2, 'C'), (2, 'D'), (3, 'B'), (3, 'D')],
  dtype=object)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...