Вы можете использовать iterrows для доступа к индексу и значениям каждой строки.
Создание фиктивного фрейма данных df = pd.DataFrame([[1, 'a', '!'], [3, 'b', '?'], [5, 'c', '#'], [7, 'c', '#']], columns=['A', 'B', 'C'])
, который выглядит как:
A B C
0 1 a !
1 3 b ?
2 5 c #
3 7 c #
мы можем написать цикл for с iterrows и проверить значения строки, в этом случае столбец B равен 'c', а столбец C равен '#', и вывести индекспервое появление, подобное этому:
for index, row in df.iterrows():
if (row.B == 'c') & (row.C == '#'):
print(index)
break
, которое вернет нам: 2
.
или специально для вас:
for index, row in df.iterrows():
if (row['Level 1'] == 'Health Insurance') & (row['Level 2'] == 'Medicare'):
print(index)
break
Надеюсь, это поможет!
Редактировать: не нужно указывать имя столбца:
Чтобы не указывать имя столбца, мы можем циклически перебирать значения в каждой строке.Я обернул это в функцию, так как это единственный известный мне способ ломаться от вложенных циклов, но я уверен, что это можно улучшить.
def look_for_word(word='Medicare', df=df):
for index, row in df.iterrows():
for val in row:
if val == word:
return df['YOUR FOURTH COLUMN NAME'].iloc[index]
print(look_for_word(word='Medicare', df=df))