#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]
.
Наконец, целочисленное местоположение имени столбца извлекается путем поиска имени в списке столбцов.