【问题标题】:Pandas: new column with largest value from existing columns [duplicate]Pandas:现有列中具有最大值的新列[重复]
【发布时间】:2020-10-01 15:24:45
【问题描述】:

我很难理解如何在没有迭代的情况下进行基本的数据操作,所以如果我不再有意义,请尝试对我放轻松。 假设我有一个数据框df,如下所示:

        f1    f2    f3    f4
1       1     2     3     'Sari'
2       2     1     4     'Sally'
3       3     0     1     'Jose'

我想知道如何获取每行中的最大整数。我可以将其存储在新列 f5 中。所以,也许代码是

df['f5'] = ??? #I'm stuck...

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    天哪,我想我想通了......

    df['f5'] = df[['f1','f2','f3']].max(axis=1)
    

    如果有更好的方法,请告诉我。

    【讨论】:

    • 谢谢。看到有关 df.select_dtypes('number') 的评论,如果您的列数超过 3 列,这显然很有帮助。
    • 如果列数不断增加,您将不得不手动将其添加到列表中['f1','f2','f3'].. 所以为避免这种情况,请查看我的答案。
    • 如果答案有帮助,请考虑投票。
    • 除此之外,这不起作用,您是否尝试运行您的代码?
    • @philosofool 我猜你的代码丢失了[]。应该是df['f5'] = df[['f1','f2','f3']].max(axis=1)
    【解决方案2】:

    使用df.max(axis=1):

    In [2682]: df 
    Out[2682]: 
       f1  f2  f3       f4
    1   1   2   3   'Sari'
    2   2   1   4  'Sally'
    3   3   0   1   'Jose'
    
    In [2684]: df['f5'] = df.select_dtypes('number').max(axis=1)
    In [2685]: df                
    Out[2685]: 
       f1  f2  f3       f4  f5
    1   1   2   3   'Sari'   3
    2   2   1   4  'Sally'   4
    3   3   0   1   'Jose'   3
    

    df.select_dtypes('number') 仅选择具有dtypeintfloat 的列。这确保了max 的计算只针对数字列而不是字符串列。

    axis=1 在行级计算函数。

    axis=0 在列级计算函数。

    【讨论】:

    • 为了安全起见,我会使用:df.select_dtypes('number').max(axis=1)
    • @Erfan 同意。编辑了我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多