如果达到特定条件,如何从数据框中选择字段?

时间:2019-04-18 11:55:18

标签: python python-3.x pandas csv dataframe

我有一个方案,我在csv文件中有一些数据,然后检索并存储在数据框中。现在,我需要根据特定条件遍历每一行。如果满足该条件,那么我需要检索该行的一个字段。

例如: 我在数据框中有与板球运动员有关的数据。现在,我要选择击球率最高的球员的名字。

有人可以帮我解决这个问题吗?

print("The best Batsman of the Tournament could possibly be: ",
      dataset['Names'].loc[(dataset['Average'] == max(dataset['Average'])) & (dataset['Innings'] >= 15)])

预期输出必须是总积分最高的玩家,例如Virat Kohli等...

我得到输出,但是有一些小错误,如下所示: 比赛中最好的击球手可能是:2 Virat Kohli 名称:名称,dtype:对象

在这里我不想在':'之后打印任何内容,除了'Virat kohli'。

3 个答案:

答案 0 :(得分:1)

您已经接近,但需要正确设置语法。使用:

print("The best Batsman of the Tournament could possibly be: ",
      dataset.loc[(dataset['Average'] == dataset['Average'].max()) & (dataset['Innings'] >= 15), ['Names']].iloc[0])

使用max(dataset['Average'])代替dataset['Average'].max(,因为它更快。此外,loc允许您指定所需的列,因此['Names']iloc可以检索第一个元素

答案 1 :(得分:1)

如果确定存在匹配项,则可以在idxmax()中的条件之后使用Innings

print("The best Batsman of the Tournament could possibly be: ",
  df.loc[df.loc[df.Innings>=15,'Average'].idxmax(),'Names'])

输出

The best Batsman of the Tournament could possibly be:  Virat Kohli

答案 2 :(得分:1)

如果没有匹配的值,则应该有问题,然后idxmax错误地返回第一个值,最好在这里将nextiter一起使用:

a =  dataset.loc[(dataset['Average'] == dataset['Average'].max()) & 
                 (dataset['Innings'] >= 15), 'Names']
print("The best Batsman of the Tournament could possibly be:
                               {}".format(next(iter(a), 'no match')))
相关问题