Вы можете сделать несколько длинных и трудных для чтения списков:
# assume this df and that we are looking for 'abc'
df = pd.DataFrame({'col':['abc', 'def','wert','abc'], 'col2':['asdf', 'abc', 'sdfg', 'def']})
[(df[col][df[col].eq('abc')].index[i], df.columns.get_loc(col)) for col in df.columns for i in range(len(df[col][df[col].eq('abc')].index))]
out:
[(0, 0), (3, 0), (1, 1)]
Я должен отметить, что это (значение индекса, расположение столбца)
вы также можете изменить .eq()
на str.contains()
, если вы ищете какие-либо строки, содержащие определенное значение:
[(df[col][df[col].str.contains('ab')].index[i], df.columns.get_loc(col)) for col in df.columns for i in range(len(df[col][df[col].str.contains('ab')].index))]