Я пытаюсь прочитать документацию для панд, но не могу понять, что является лучшим решением моей проблемы.У меня есть датафрейм для панд, называемый наградами.
Каждая строка кадра данных представляет награду, и каждая награда имеет идентификатор.Я хочу получить награду из фрейма данных с определенным идентификатором и использовать некоторые его значения для сравнения.Пожалуйста, посмотрите фрагмент кода ниже.
Я пытался использовать это:
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
Я хочу найти чистый и лаконичный способ сделать это.Любая помощь приветствуется!Дайте мне знать, если мне нужно что-то объяснить.