返回行中3个最大值的列名称

缺口

我试图提出一种方法来返回下表每行中3个最大值的列名。到目前为止,我已经能够使用idxmax返回最高值,但是我还无法弄清楚如何获得第二和第三高值。

   Clust  Stat1    Stat2    Stat3    Stat4    Stat5    Stat6  
0  9      0.00     0.15     0.06     0.11     0.23     0.01    
1  4      0.00     0.25     0.04     0.10     0.10     0.00    
2  11     0.00     0.34     0.00     0.09     0.24     0.00     
3  12     0.00     0.16     0.00     0.11     0.00     0.00       
4  0      0.00     0.35     0.00     0.04     0.02     0.00     
5  17     0.01     0.21     0.02     0.18     0.27     0.01 

预期产量:

   Clust  Stat1    Stat2    Stat3    Stat4    Stat5    Stat6      TopThree
0  9      0.00     0.15     0.06     0.11     0.23     0.01   [Stat5,Stat2,Stat4]  
1  4      0.00     0.25     0.04     0.10     0.10     0.00   [Stat2,Stat4,Stat5]       
2  11     0.00     0.34     0.00     0.09     0.24     0.00   [Stat2,Stat5,Stat4]        
3  12     0.00     0.16     0.00     0.19     0.00     0.01   [Stat4,Stat2,Stat6]          
4  0      0.00     0.35     0.00     0.04     0.02     0.00   [Stat2,Stat4,Stat5]        
5  17     0.01     0.21     0.02     0.18     0.27     0.01   [Stat5,Stat2,Stat4]   

如果有人对如何执行此操作有任何想法,我将不胜感激。

耶斯列尔

使用numpy.argsort未经事先排序的值和过滤所有列的位置:

a = df.iloc[:, 1:].to_numpy()
df['TopThree'] = df.columns[1:].to_numpy()[np.argsort(-a, axis=1)[:, :3]].tolist()
print (df)
   Clust  Stat1  Stat2  Stat3  Stat4  Stat5  Stat6               TopThree
0      9   0.00   0.15   0.06   0.11   0.23   0.01  [Stat5, Stat2, Stat4]
1      4   0.00   0.25   0.04   0.10   0.10   0.00  [Stat2, Stat4, Stat5]
2     11   0.00   0.34   0.00   0.09   0.24   0.00  [Stat2, Stat5, Stat4]
3     12   0.00   0.16   0.00   0.11   0.00   0.00  [Stat2, Stat4, Stat1]
4      0   0.00   0.35   0.00   0.04   0.02   0.00  [Stat2, Stat4, Stat5]
5     17   0.01   0.21   0.02   0.18   0.27   0.01  [Stat5, Stat2, Stat4]

如果性能并不重要:

df['TopThree'] = df.iloc[:, 1:].apply(lambda x: x.nlargest(3).index.tolist(), axis=1)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找每行具有前3个最大值的列名称

来自分类Dev

如何返回3个值之间的最大值?

来自分类Dev

在R的行中返回三个最大值的函数

来自分类Dev

返回行标签以获取Excel R中的最大值

来自分类Dev

根据各列之间的比较,将最大值的列名称分配给行

来自分类Dev

如何使用apply()系列识别行中最大值的列名称

来自分类Dev

MongoDB罗盘-从文档中的3个字段及其值中获取最大值的字段名称(键)

来自分类Dev

按返回正确的名称分组,以获得另一个字段中的最大值

来自分类Dev

熊猫在行中的最大值,并用值和列名返回df

来自分类Dev

按行选择5个最大值,并输出这些值的列名

来自分类Dev

从 3 个向量中获取最大值

来自分类Dev

返回每组最大值的行

来自分类Dev

返回基于记录中最大值的列名

来自分类Dev

从SQL选择中返回最大值

来自分类Dev

在javascript对象中返回最大值

来自分类Dev

将行名列名和最大值的单元格存储在矩阵诊断中

来自分类Dev

如何获取一行中的最大值以及列名

来自分类Dev

获取保存行最大值的列名

来自分类Dev

对于d中第c行的每个值,返回最大值为a的行

来自分类Dev

从表中返回具有最大值lua的对象的名称

来自分类Dev

Excel:在非连续数组中返回具有最大值的列的名称

来自分类Dev

在每行中查找最大值并报告列名

来自分类Dev

从数字列表返回3个最大值的函数错误

来自分类Dev

选择表中某个值的名称(例如,最大值)

来自分类Dev

使用colnames返回数据框行中第一个出现的第二个最大值并应用

来自分类Dev

返回(两个)逐元素相加的向量中的最大值

来自分类Dev

计算R中每一行中特定列的后3行最大值

来自分类Dev

计算Python中每一行中特定列的下3行的最大值

来自分类Dev

从整个熊猫数据框中返回最大值,而不是基于列或行

Related 相关文章

  1. 1

    查找每行具有前3个最大值的列名称

  2. 2

    如何返回3个值之间的最大值?

  3. 3

    在R的行中返回三个最大值的函数

  4. 4

    返回行标签以获取Excel R中的最大值

  5. 5

    根据各列之间的比较,将最大值的列名称分配给行

  6. 6

    如何使用apply()系列识别行中最大值的列名称

  7. 7

    MongoDB罗盘-从文档中的3个字段及其值中获取最大值的字段名称(键)

  8. 8

    按返回正确的名称分组,以获得另一个字段中的最大值

  9. 9

    熊猫在行中的最大值,并用值和列名返回df

  10. 10

    按行选择5个最大值,并输出这些值的列名

  11. 11

    从 3 个向量中获取最大值

  12. 12

    返回每组最大值的行

  13. 13

    返回基于记录中最大值的列名

  14. 14

    从SQL选择中返回最大值

  15. 15

    在javascript对象中返回最大值

  16. 16

    将行名列名和最大值的单元格存储在矩阵诊断中

  17. 17

    如何获取一行中的最大值以及列名

  18. 18

    获取保存行最大值的列名

  19. 19

    对于d中第c行的每个值,返回最大值为a的行

  20. 20

    从表中返回具有最大值lua的对象的名称

  21. 21

    Excel:在非连续数组中返回具有最大值的列的名称

  22. 22

    在每行中查找最大值并报告列名

  23. 23

    从数字列表返回3个最大值的函数错误

  24. 24

    选择表中某个值的名称(例如,最大值)

  25. 25

    使用colnames返回数据框行中第一个出现的第二个最大值并应用

  26. 26

    返回(两个)逐元素相加的向量中的最大值

  27. 27

    计算R中每一行中特定列的后3行最大值

  28. 28

    计算Python中每一行中特定列的下3行的最大值

  29. 29

    从整个熊猫数据框中返回最大值,而不是基于列或行

热门标签

归档