【问题标题】:2nd largest value in each row每行中的第二个最大值
【发布时间】:2022-08-23 22:55:52
【问题描述】:

如何创建一个列col4,其中包含每行中的第二个最大值

df = pd.DataFrame([[4, 1, 5], 
               [5, 2, 9],
               [2, 9, 3], 
               [8, 5, 4]], 
              columns=[\"col_A\", \"col_B\", \"col_C\"])

cols = np.array(df.columns)

df[\'col4\'] = df.nlargest(2, columns=cols) #wrong

    标签: python pandas dataframe


    【解决方案1】:

    您可以对np.sort 的输出使用索引:

    N = 2
    df['col4'] = np.sort(df)[:, -N]
    

    替代apply

    df['col4'] = df.apply(lambda r: r.nlargest(2).iloc[-1], axis=1)
    

    输出:

       col_A  col_B  col_C  col4
    0      4      1      5     4
    1      5      2      9     5
    2      2      9      3     3
    3      8      5      4     5
    

    【讨论】:

      【解决方案2】:

      对于每一行,您可以对值进行排序并取倒数第二个,如下所示:

      df["col4"] = df.apply(lambda x: sorted(x)[-2], axis=1)
      

      【讨论】:

        猜你喜欢
        • 2021-12-04
        • 1970-01-01
        • 1970-01-01
        • 2016-07-18
        • 2020-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多