Как я могу получить определенные строки из кадра данных pandas? - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь прочитать документацию для панд, но не могу понять, что является лучшим решением моей проблемы.У меня есть датафрейм для панд, называемый наградами.

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

Я пытался использовать это:

possible_awards = awards.loc[[awards['id'] ==  r_a['award_id']]]

, но я не думаю, что это лучший способ.Во-первых, я думаю (?) Это должно вернуть мне массив или другой фрейм данных, когда на самом деле я знаю, что с этим ID есть только одна награда.Во-вторых, я не знаю, как перебрать то, что это возвращает.

Я хочу иметь возможность получить доступ к столбцам кадра данных для этой конкретной строки, например, здесь:

if possible_award['institution_id'] == award['institution_id'] and possible_award['department'] == award['department']:

Однако я не могу этого сделать, когда перебираю всеОбъект 'возможных_вард' есть.Я получаю следующую ошибку: «строковые индексы должны быть целыми числами»

def foo(researcher, award, researchers_and_awards, awards):
    for r_a in researchers_and_awards:
       if r_a['researcher_id'] == researcher['id']:
            possible_awards = awards.loc[[awards['id'] ==  r_a['award_id']]] 
        for index, possible_award in possible_awards:
            if possible_award['institution_id'] == award['institution_id'] and possible_award['department'] == award['department']:
                    return True
            if possible_award['institution_id'] != award['institution_id'] and possible_award['competition_year'] != award['competition_year']:
                return True
return False

Я хочу найти чистый и лаконичный способ сделать это.Любая помощь приветствуется!Дайте мне знать, если мне нужно что-то объяснить.

1 Ответ

0 голосов
/ 30 декабря 2018

Я могу использовать:

possible_awards = awards[awards['id']==r_a['award_id']]

Затем выполнить итерацию, как показано ниже:

for idx,row in possible_awards.iterrows():
    # do whatever you want on this line with `row`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...