n数据帧中的最高值

2024-04-25 11:53:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据框,比如:

        column0     column1     column2     column3     column4
row0    179319.0    180895.0    94962.0     130734.0    0
row1    89659.5     90447.5     47481.0     65367.0     0
row2    59773.0     60298.33333 31654.0     43578.0     0
row3    44829.75    45223.75    23740.5     32683.5     0
row4    35863.8     36179.0     18992.4     26146.8     0
row5    29886.5     30149.16666 15827.0     21789.0     0
row6    25617.0     25842.14285 13566.0     18676.28571 0
row7    22414.875   22611.875   11870.25    16341.75    0
row8    19924.33333 20099.44444 10551.33333 14526.0     0

我想得到9(行数)最高值的索引,或者每列最高值的计数,比如:

column0  column1  column2  column3  column4
3        3        1        2        0

在我的示例中,9个最大值是来自第0行的column0、column1、column2和column3中的值,来自第1行的column0、column1和column3中的值,以及来自第2行的column0和column1中的值。你知道吗

有什么想法吗?谢谢!你知道吗


Tags: 数据row1row2row3column1column2row0row4
3条回答

pandas有一个名为nlargest的函数,它将以序列的形式返回任何列的最大值。[docs]

如果您只需要每个的索引,那么您可以使用index.values[usage][docs],或者可以按照docs中的建议使用.index.array。你知道吗

如果您想要所有最高值的计数,请查看this answer here。你知道吗

IIUC,你可以堆叠和排序

df.stack().sort_values(ascending = False).iloc[:9]

row0  column1    180895.00000
      column0    179319.00000
      column3    130734.00000
      column2     94962.00000
row1  column1     90447.50000
      column0     89659.50000
      column3     65367.00000
row2  column1     60298.33333
      column0     59773.00000

IIUCnlargeststack之后

df.stack().nlargest(9).groupby(level=1).count().reindex(df.columns,fill_value=0)
Out[48]: 
column0    3
column1    3
column2    1
column3    2
column4    0
dtype: int64

相关问题 更多 >