【问题标题】:在同一行上创建一个具有最少其他列的新列
【发布时间】:2022-01-23 16:50:39
【问题描述】:

我有以下数据框

输入:

A    B    C    D    E
2    3    4    5    6
1    1    2    3    2 
2    3    4    5    6

我想添加一个新列,该列的 A、B 和 C 最小值为该行

输出:

A    B    C    D    E    Goal
2    3    4    5    6    2
1    1    2    3    2    1 
2    3    4    5    6    2

我尝试过使用

df = df[['A','B','C]].min() 

但我收到有关散列列表的错误,而且我认为这将是整个列的最小值,我只想要那些特定列的行的最小值。

我怎样才能最好地做到这一点?

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    在带有axis=1 的列中使用min

    生成不改变原始副本的内联解决方案

    df.assign(Goal=lambda d: d[['A', 'B', 'C']].min(1))
    
       A  B  C  D  E  Goal
    0  2  3  4  5  6     2
    1  1  1  2  3  2     1
    2  2  3  4  5  6     2
    

    相同的答案不同

    将列添加到现有数据框

    new = df[['A', 'B', 'C']].min(axis=1)
    
    df['Goal'] = new
    
    df
    
       A  B  C  D  E  Goal
    0  2  3  4  5  6     2
    1  1  1  2  3  2     1
    2  2  3  4  5  6     2
    

    【讨论】:

      【解决方案2】:

      axis = 1 添加到您的min

      df['Goal'] = df[['A','B','C']].min(axis = 1) 
      

      【讨论】:

        【解决方案3】:

        您必须定义一个轴,在该轴上应用 min 函数,该轴为 1(列)。

        df['ABC_row_min'] = df[['A', 'B', 'C']].min(axis = 1)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-28
          • 2019-10-01
          • 2021-07-08
          相关资源
          最近更新 更多