如何从Pandas DataFrame中的10列中找到前3个概率?

时间:2016-06-05 02:52:34

标签: python pandas argmax

我有一个Pandas Dataframe,每列有一个概率,我有10列。 Row代表一条记录。我想选择前三个概率并返回列名(类似于argmax)。

由于我有大量的行,我不希望使用循环。 有人可以帮我这么做吗?

DataFrame看起来像这样:

    col0    col1    col2    col3    col4    col5    col6    col7    col8    col9    
0   0.089659    0.0 0.0 0.0 0.228481    0.000000    0.0 0.575523    0.0 0.089667    
1   0.000000    0.0 0.0 0.0 0.000000    0.422125    0.0 0.516324    0.0 0.000000    
2   0.000000    0.0 0.0 0.0 0.000000    0.304416    0.0 0.659216    0.0 0.000000    
3   0.598459    0.0 0.0 0.0 0.100792    0.082668    0.0 0.144577    0.0 0.053502    
4   0.100000    0.1 0.1 0.1 0.100000    0.100000    0.1 0.100000    0.1 0.100000    

2 个答案:

答案 0 :(得分:2)

鉴于df

ifconfig

您可以使用nlargest

df
Out[145]: 
       col0  col1  col2  col3      col4      col5  col6      col7  col8  \
0  0.089659   0.0   0.0   0.0  0.228481  0.000000   0.0  0.575523   0.0   
1  0.000000   0.0   0.0   0.0  0.000000  0.422125   0.0  0.516324   0.0   
2  0.000000   0.0   0.0   0.0  0.000000  0.304416   0.0  0.659216   0.0   
3  0.598459   0.0   0.0   0.0  0.100792  0.082668   0.0  0.144577   0.0   
4  0.100000   0.1   0.1   0.1  0.100000  0.100000   0.1  0.100000   0.1   

       col9  
0  0.089667  
1  0.000000  
2  0.000000  
3  0.053502  
4  0.100000

答案 1 :(得分:0)

你应该研究nlargest。这可能足以让你前进:

df.T.nlargest(3, df.T.columns).T