栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在pandas DataFrame中查找列的值最大的行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在pandas DataFrame中查找列的值最大的行

使用熊猫

idxmax
功能。很简单:

>>> import pandas>>> import numpy as np>>> df = pandas.Dataframe(np.random.randn(5,3),columns=['A','B','C'])>>> df          A         B         C0  1.232853 -1.979459 -0.5736261  0.140767  0.394940  1.0688902  0.742023  1.343977 -0.5797453  2.125299 -0.649328 -0.2116924 -0.187253  1.908618 -1.862934>>> df['A'].argmax()3>>> df['B'].argmax()4>>> df['C'].argmax()1
  • 或者,您也可以使用

    numpy.argmax
    ,例如
    numpy.argmax(df['A'])
    -它提供相同的功能,并且至少与
    idxmax
    粗略观察中的显示速度一样快。

  • idxmax()
    返回索引标签,而不是整数。

    • 示例”:如果您将字符串值作为索引标签,例如行“ a”至“ e”,则可能想知道最大值出现在第4行(而不是“ d”行)。
    • 如果您希望该标签在其中的整数位置,则
      Index
      必须手动获取它(由于允许使用重复的行标签,因此可能很棘手)。

历史记录:

  • idxmax()
    以前在0.11之前被调用
    argmax()
  • argmax
    在1.0.0之前弃用,并在1.0.0中完全删除
  • 从Pandas 0.16开始,它
    argmax
    曾经存在并执行相同的功能(尽管运行速度比慢
    idxmax
    )。
    • argmax
      函数返回最大元素的行位置的索引内的 整数位置
    • 熊猫开始使用行标签代替整数索引。 位置整数索引曾经很常见,比标签更常见,特别是在重复行标签很常见的应用程序中。

例如,考虑以下

Dataframe
带有重复行标签的玩具:

In [19]: dfrmOut[19]:A         B         Ca  0.143693  0.653810  0.586007b  0.623582  0.312903  0.919076c  0.165438  0.889809  0.000967d  0.308245  0.787776  0.571195e  0.870068  0.935626  0.606911f  0.037602  0.855193  0.728495g  0.605366  0.338105  0.696460h  0.000000  0.090814  0.963927i  0.688343  0.188468  0.352213i  0.879000  0.105039  0.900260In [20]: dfrm['A'].idxmax()Out[20]: 'i'In [21]: dfrm.iloc[dfrm['A'].idxmax()]  # .ix instead of .iloc in older versions of pandasOut[21]:A         B         Ci  0.688343  0.188468  0.352213i  0.879000  0.105039  0.900260

因此,单单使用

idxmax
不足以提供足够的信息,而旧形式的
argmax
可以正确提供最大行的 位置 (在这种情况下为位置9)。

这恰恰是动态类型语言中那些容易发生错误的令人讨厌的行为之一,这种行为使这种事情非常不幸,值得一搏。如果您正在编写系统代码,并且系统突然被用于某些在加入之前未正确清理的数据集,则很容易以重复的行标签结尾,尤其是字符串标签,例如金融资产的CUSIP或SEDOL标识符。您不能轻松地使用类型系统来帮助您,并且可能无法在索引上强制唯一性而不遇到意外丢失的数据。

因此,您只希望单元测试能够覆盖所有内容(它们没有,或者很可能没有人编写任何测试)-否则(很可能)您只剩下等着看是否碰巧遇到了这个问题运行时错误,在这种情况下,你可能不得不去从你输出结果,碰你的头反对IPython的墙试图手动重现问题数据库中删除多个小时的工作价值,终于搞清楚,这是因为

idxmax
可以
报告最大行的 标签 ,然后对没有标准函数自动为您获取最大行的 位置 感到失望,自己编写一个有问题的实现,编辑代码,并祈祷您不再遇到问题。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624785.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号