Python 熊猫:按平均值对列进行排序

Python 熊猫:按平均值对列进行排序,python,pandas,Python,Pandas,我在Pandas中有一个数据框,我想根据其列的平均值(或按其标准值)对其列进行排序(即获取新的数据框或视图)。文档中谈到了,但我找不到任何关于自定义排序方法的内容 我该怎么做 您可以使用DataFrame方法和Series方法: 然后,可以使用以下命令对列重新排序: 注意:在pandas的早期版本中,sort_值过去是order,但是order作为0.17的一部分被弃用,以便与其他排序方法更一致。此外,在早期版本中,必须使用reindex\u axis而不是reindex,您可以使用它创建变量

我在Pandas中有一个数据框,我想根据其列的平均值(或按其标准值)对其列进行排序(即获取新的数据框或视图)。文档中谈到了,但我找不到任何关于自定义排序方法的内容

我该怎么做

您可以使用DataFrame方法和Series方法:

然后,可以使用以下命令对列重新排序:


注意:在pandas的早期版本中,
sort_值
过去是
order
,但是
order
作为0.17的一部分被弃用,以便与其他排序方法更一致。此外,在早期版本中,必须使用
reindex\u axis
而不是
reindex

,您可以使用它创建变量,对值进行排序并将其放到同一行代码中

df = pd.DataFrame(np.random.randn(4,4), columns=list('ABCD'))
df.assign(m=df.mean(axis=1)).sort_values('m').drop('m', axis=1)

看来,
order
现在已被弃用,应该改用
sort\u值(在0.17.0版中添加)
。@bli谢谢!我真的需要写一个脚本来更新我的所有答案(我怀疑有几百个可以通过更新来完成)…排序值(升序=False)如果您想要降序,我建议使用
reindex
而不是
reindex\u axis
,因为它被标记为已弃用,并且将在将来的版本中删除(我使用的是pandas v0.23.4)。谢谢@dvitsios,我用您的建议更新了这个答案!
In [15]: df.reindex(df.mean().sort_values().index, axis=1)
Out[15]:
          D         A         C         B
0 -1.867853  0.933069  0.288637  1.432486
1  1.318175 -0.455952  0.339908 -0.725268
2  0.508845 -0.894331  1.116137  0.573868
3 -0.925478  0.661572 -0.527327  0.819360
df = pd.DataFrame(np.random.randn(4,4), columns=list('ABCD'))
df.assign(m=df.mean(axis=1)).sort_values('m').drop('m', axis=1)