Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas 熊猫:第k大熊猫的idxmax_Pandas - Fatal编程技术网

Pandas 熊猫:第k大熊猫的idxmax

Pandas 熊猫:第k大熊猫的idxmax,pandas,Pandas,有了概率分布的df,我得到了df.idxmax(axis=1)行的最大概率,如下所示: df['1k-th'] = df.idxmax(axis=1) 并得到如下结果: (如果看不到所有列,请向右滚动表格) 问题是如何得到第2、3等概率,从而得到以下结果: 0 1 2 3 4 5 6 1k-th 2-th 0 0.114869 0.0

有了概率分布的
df
,我得到了
df.idxmax(axis=1)
行的最大概率,如下所示:

df['1k-th'] = df.idxmax(axis=1)
并得到如下结果:

(如果看不到所有列,请向右滚动表格)

问题是如何得到第2、3等概率,从而得到以下结果:

    0           1           2           3           4           5           6           1k-th   2-th
0   0.114869    0.020708    0.025587    0.028741    0.031257    0.031619    0.747219    6       0
1   0.020206    0.012710    0.010341    0.012196    0.812495    0.113863    0.018190    4       3
2   0.023585    0.735475    0.091795    0.021683    0.027581    0.054217    0.045664    1       4
3   0.009834    0.009175    0.013165    0.016014    0.015507    0.899115    0.037190    5       4
4   0.023357    0.736059    0.088721    0.021626    0.027341    0.056289    0.046607    1       2

谢谢大家!

我自己的解决方案不是最漂亮的,但它确实有效,而且运行速度很快:

for i in range(7):
    p[f'{i}k'] = p[[0,1,2,3,4,5,6]].idxmax(axis=1)
    p[f'{i}k_v'] = p[[0,1,2,3,4,5,6]].max(axis=1)

    for x in range(7):
        p[x] = np.where(p[x]==p[f'{i}k_v'], np.nan, p[x])
循环执行以下操作:

  • 查找最大值及其列索引
  • 删除找到的值(设置为
    nan
    ) 再次
  • 查找第二大值
  • 删除找到的值
  • 等等。。。

您的问题已经得到了回答
for i in range(7):
    p[f'{i}k'] = p[[0,1,2,3,4,5,6]].idxmax(axis=1)
    p[f'{i}k_v'] = p[[0,1,2,3,4,5,6]].max(axis=1)

    for x in range(7):
        p[x] = np.where(p[x]==p[f'{i}k_v'], np.nan, p[x])