繁体   English   中英

如何从 Pandas 数据框中获取特定行?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM