Find names of top-n highest-value columns in each pandas dataframe row

后端 未结 2 883
自闭症患者
自闭症患者 2020-12-01 09:53

I have the following dataframe:

  id     p1 p2 p3 p4
  1      0  9  1  4
  2      0  2  3  4
  3      1  3 10  7
  4      1  5  3  1
  5      2  3  7 10
         


        
2条回答
  •  执念已碎
    2020-12-01 10:21

    You can use:

    df = df.set_index('id').apply(lambda x: pd.Series(x.sort_values(ascending=False)
           .iloc[:3].index, 
          index=['top1','top2','top3']), axis=1).reset_index()
    print (df)
       id top1 top2 top3
    0   1   p2   p4   p3
    1   2   p4   p3   p2
    2   3   p3   p4   p2
    3   4   p2   p3   p4
    4   5   p4   p3   p2
    

提交回复
热议问题