Python 如果达到特定条件,如何从数据帧中选择字段?
我有一个场景,我在一个csv文件中有一些数据,我检索了它并存储在一个数据框中。现在,我需要根据特定的条件遍历每一行。如果满足该条件,则需要检索该行的一个字段 例如: 我有一个数据框中与板球运动员相关的数据。现在我想选择击球率最高的球员的名字 有人能帮我解决这个问题吗Python 如果达到特定条件,如何从数据帧中选择字段?,python,python-3.x,pandas,csv,dataframe,Python,Python 3.x,Pandas,Csv,Dataframe,我有一个场景,我在一个csv文件中有一些数据,我检索了它并存储在一个数据框中。现在,我需要根据特定的条件遍历每一行。如果满足该条件,则需要检索该行的一个字段 例如: 我有一个数据框中与板球运动员相关的数据。现在我想选择击球率最高的球员的名字 有人能帮我解决这个问题吗 print("The best Batsman of the Tournament could possibly be: ", dataset['Names'].loc[(dataset['Average'] == ma
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”之外,我不想在“:”之后打印任何内容。您很接近,但需要正确使用语法。使用:
print("The best Batsman of the Tournament could possibly be: ",
dataset.loc[(dataset['Average'] == dataset['Average'].max()) & (dataset['Innings'] >= 15), ['Names']].iloc[0])
使用
dataset['Average'].max(
),而不是使用max(dataset['Average'])
,因为它更快。另外,loc
允许您指定所需的列,从而指定['Names']
和iloc
来检索第一个元素如果您确定存在匹配项,则可以在局中的条件之后使用idxmax()
:
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
如果没有匹配的值,那么idxmax
错误地返回第一个值,最好是将next
与iter
一起使用:
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')))
当我尝试使用与上面相同的代码时,如下所示:print(“本次比赛的主要小门接受者可能是:”,dataset.loc[dataset.loc[dataset['Wickets']]].idxmax(),'Names'])
我得到了以下错误:类型错误:此数据类型不允许使用缩减操作'argmax'。我不知道为什么@Vivek如果Wickets
列的数据类型是object,它将抛出错误,如果我理解正确,它应该是int。选中此项: