Python pandas.nlargest()-与重复的索引值混淆
我将以下示例数据框定义为:Python pandas.nlargest()-与重复的索引值混淆,python,pandas,dataframe,Python,Pandas,Dataframe,我将以下示例数据框定义为: df1 = pandas.DataFrame(data = {"Age":[28, 3, 32, 18], "Student":[False, True, False, False]}, index = ["Jack", "Sam", "Nate", "Jack"]) 输出如下 如果我想提取年龄值最大的两行,我使用pandas.nlargest(2,“年龄”),输出有三行,而不是两行,如下所示: 如果我使用pandas.nlargest(4,“Age”)尝试4个
df1 = pandas.DataFrame(data = {"Age":[28, 3, 32, 18], "Student":[False, True, False, False]}, index = ["Jack", "Sam", "Nate", "Jack"])
输出如下
如果我想提取年龄值最大的两行,我使用pandas.nlargest(2,“年龄”),输出有三行,而不是两行,如下所示:
如果我使用pandas.nlargest(4,“Age”)尝试4个最大的年龄值,结果会更加混乱,如下所示:
df1 = pandas.DataFrame(data = {"Age":[28, 3, 32, 18], "Student":[False, True, False, False]}, index = ["Jack", "Sam", "Nate", "Jack"])
我不明白背后的原因 问题解决了。我使用的Pandas版本是0.19.1,在我将其更新为0.19.2并重新执行代码之后,它就工作了 谢谢大家! 在中修复了以下错误:
- 当索引具有重复值时,
和DataFrame.nlagest
中出现错误()DataFrame.nsmalest
注意:在计数函数上应用NLAGEST函数时,该函数在NLAGEST函数上运行我正在使用Excel电子表格,并且NLAGEST也存在此问题。我也在使用0.19.2,但仍然存在此问题。索引值在我的工作表中重复。但是,除非单元格值也是重复的,否则没有问题。例如:
new = dataframe.nlargest(5, "DEF") -- only taking 5 largest values
print(new.loc[:, "DEF"])
印刷品:
Player
Player 1 39.0
Player 2 36.0
Player 3 36.0
Player 2 36.0
Player 3 36.0
Player 4 34.0
Player 1 34.0
Player 5 34.0
Player 4 34.0
Player 1 34.0
PLayer 5 34.0
Name: DEF, dtype: float64
--我得到的是11个值,而不是5个。。。它应该告诉我:
Player
Player 1 39
Player 2 36
Player 3 36
Player 4 34
Player 1 34
但是如果单元格值不重复,NLAGEST对我有效。。例如:
new = dataframe.nlargest(5, "DEF") -- only taking 5 largest values
print(new.loc[:, "DEF"])
new = all_rounds.nlargest(5, "Frags")
print(new.loc[:, "Frags"])
prints:
Player
Player 1 117.0
Player 2 112.0
Player 2 105.0
Player 3 103.0
PLayer 4 102.0
Name: Frags, dtype: float64
--这是正确的
当存在单元格值重复时,在Excel数据框上使用nlargest似乎有问题。除非我遗漏了什么。你用什么版本的“熊猫”?我尝试了您的示例,它工作正常:“df1.nlargest(2,'Age')”返回两行最大的'Age'。也看到我用过熊猫。0.19.2版本为0.19.1。我还尝试了联机python shell,但结果相同。@user35603我已更新,问题已解决。我真的很感激。你把我从几个小时的头痛中救了出来谢谢马祖,希望它能帮助别人。我已经做了。我很乐意帮忙;)