【问题标题】:pandas.nlargest() - Confused with repeated index valuespandas.nlargest() - 与重复的索引值混淆
【发布时间】:2023-03-30 07:13:01
【问题描述】:

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

df1 = pandas.DataFrame(data = {"Age":[28, 3, 32, 18], "Student":[False, True, False, False]}, index = ["Jack", "Sam", "Nate", "Jack"])

输出如下。

如果我想提取年龄值最大的 2 行,我使用 pandas.nlargest(2, "Age") 并且输出有 3 行而不是 2 行,如下所示:

如果我尝试使用 pandas.nlargest(4, "Age") 获取 4 个最大的年龄值,结果会更加混乱,如下所示:

我对理解其背后的原因感到困惑。

【问题讨论】:

  • 你使用什么版本的“熊猫”?我试过你的例子,它工作正常:'df1.nlargest(2,'Age')'返回两行最大'Age'。另请参阅github.com/pandas-dev/pandas/issues/13412 我使用了 pandas 版本。 0.19.2
  • 版本为0.19.1。我也试过网上的python shell,结果是一样的。
  • @user35603 我更新并解决了问题。我真的很感激。你让我免于头疼几个小时
  • 感谢 MaxU,希望它可以帮助某人。我已经做到了。
  • 我很乐意提供帮助 ;)

标签: python pandas dataframe


【解决方案1】:

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

谢谢user35603

Pandas 0.19.2 中修复了以下错误:

  • 当索引具有重复值时,DataFrame.nlargestDataFrame.nsmallest 中的错误 (GH13412)

注意:bug still remains 应用于 count 函数时,nlargest 函数上

【讨论】:

    【解决方案2】:

    我正在使用 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 似乎存在问题。除非我错过了什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-10
      • 1970-01-01
      • 2016-02-24
      相关资源
      最近更新 更多