我有一个包含概率的熊猫DataFrame。我需要一个新的DataFrame,其中每一行都包含已排序行的索引。例:
df = pd.DataFrame([[0.5,0.7,0.1],[0.1,0.7,0.5]])
df
0 1 2
0 0.5 0.7 0.1
1 0.1 0.7 0.5
new_df = some sort operation on df
new_df
0 1 2
0 1 0 2
1 2 0 1
我知道如何使用多个循环等硬方法。我发现了对排序值的引用,但是没有返回索引的“排序”功能。有人建议吗?
您可以通过argsort使用numpy:
df = pd.DataFrame([[0.5,0.7,0.1],[0.1,0.7,0.5]])
array = df.values.argsort(axis=1)[:,::-1]
new_df = pd.DataFrame(array)
输出new_df
:
0 1 2
0 1 0 2
1 1 2 0
注意:
正如@anky所评论的那样,在您显示的输出中有些东西没有意义,我还假设您想要降序,这就是为什么[:,::-1]
在结果中切片/
更新
就像@anky在这里的评论中建议的那样,它仍然使用argsort的相同思想,这比以下方法更简单df.values.argsort(axis=1)[:,::-1]
:
np.argsort(-df)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句