我有一个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
答案 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