![](/img/trans.png)
[英]Pandas.DataFrame: How to sort rows by the largest value in each row
[英]How to sort each row in pandas dataframe and get indices instead?
我有一个包含概率的 pandas 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
我知道如何使用多个循环等以艰难的方式做到这一点。 我发现对排序值的引用,但没有返回索引的“排序” function。 有人有什么建议吗?
您可以将 numpy 与 argsort 一起使用:
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)
output 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.