pandas.nlargest() - 对重复的索引值感到困惑

时间:2017-02-12 15:17:48

标签: python pandas dataframe

我有以下示例DataFrame定义如下:

Collections.unmodifiableList(mutableList);

并且输出正在跟随。

enter image description here

如果我想提取具有最大Age值的2行,我使用df1 = pandas.DataFrame(data = {"Age":[28, 3, 32, 18], "Student":[False, True, False, False]}, index = ["Jack", "Sam", "Nate", "Jack"]) ,输出有3行而不是2行,如下所示:

enter image description here

如果我使用pandas.nlargest(2, "Age")尝试4个最大的年龄值,结果会更加令人困惑:

enter image description here

我很难理解背后的原因。

2 个答案:

答案 0 :(得分:2)

问题已解决。我使用的Pandas版本是0.19.1,在suggestion of @user35603之后我将其更新为0.19.2并重新执行代码并且它有效!

谢谢user35603

Pandas 0.19.2修正了以下错误:

  • 当{1}}和DataFrame.nlargest当索引具有重复值(GH13412)时出现错误

注意:应用于计数功能时,nlargest函数上的bug still remains

答案 1 :(得分:0)

我正在使用Excel电子表格,我也遇到了nlargest这个问题。我也使用0.19.2仍然有这个问题。索引值在我的工作表中重复。但是,除非CELL值也重复,否则没有问题。例如:

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

但是,如果单元格值不重复,那么nlargest对我来说很有用。例如:

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似乎存在问题。除非我遗漏了什么。