Найти значение фрейма данных и вернуть номер столбца

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

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

Например

 0   dd   aa
1   ff   qq
2   ff   gg
4   ff   df
  

Возможно ли найти «gg», а затем вернуть номер столбца, в котором он был найден. В приведенном выше примере он вернет целое число, равное 1

Комментарии:

1. gg отсутствует в 1, там есть только qq и ff

2. Что такое print (df.columns) ?

3. @panda gg находится в столбце 1

Ответ №1:

Сравните значения с numpy.where , выберите второй кортеж и, если необходимо, выберите первое соответствие путем индексации:

 print (np.where(df == 'gg'))
(array([1], dtype=int64), array([1], dtype=int64))

print (np.where(df == 'gg')[1])
[1]

a = np.where(df == 'gg')[1][0]
print (a)
1
  

Если возможно, возможно несоответствие некоторого значения, используйте next with iter для возврата первого совпадающего значения или значения по умолчанию:

 print (next(iter(np.where(df == 'gg')[1]), 'no match'))
1
print (next(iter(np.where(df == 'aaa')[1]), 'no match'))
no match
  

Комментарии:

1. не могли бы вы указать на некоторые ресурсы для этого типа фильтрации?

Ответ №2:

Предполагая, что столбцы могут иметь имена, вы можете найти (первый) столбец, содержащий ‘gg’, таким образом:

 found = df.isin(['gg']).any()
column_name = found[found].index.values[0]
integer_index = df.columns.get_loc(column_name)
  

Это позволяет найти df.isin(['gg']).any() ‘gg’ во фрейме данных и перечислить все столбцы, содержащие.

Затем имя первого столбца извлекается с помощью found[found].index.values[0] .

Наконец, целочисленное местоположение имени столбца извлекается путем поиска имени в списке столбцов.