[英]How can I get specific row(s) from a pandas dataframe?
我正在尝试通读 pandas 文档,但似乎无法找出解决问题的最佳方法。 我有一个名为 Awards 的 Pandas 数据框。
数据框的每一行代表一个奖项,每个奖项都有一个 ID。 我想从具有特定 ID 的数据框中提取奖励,并使用其中的一些值进行比较。 请参阅下面的代码片段。
我尝试使用这个:
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']:
但是,当我遍历“possible_awards”的任何对象时,我似乎无法做到这一点。 我收到以下错误:“字符串索引必须是整数”
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
我想找到一种干净简洁的方法来做到这一点。 任何帮助表示赞赏! 如果我需要进一步解释,请告诉我。
你可以使用:
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`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.