Искать переменную по всему фрейму данных и возвращать фрагмент первого вхождения - PullRequest
0 голосов
/ 20 февраля 2019

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

Пример данных:

enter image description here

Итак, я хочу, чтобы числа из столбца 4 соответствовали первому вхождению значения строки.Например: «Из кармана» в столбцах «Уровень 1» или первое появление «Медикейд» в «Уровень 2».Этот код работал для:

    idx = (df['Level 1'] == 'Out of pocket').idxmax()

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

1 Ответ

0 голосов
/ 20 февраля 2019

Вы можете использовать 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...