如何通过列的标准偏差对熊猫数据框进行排序?

时间:2019-10-15 00:02:40

标签: python-3.x pandas

给出以下示例:

from statistics import stdev
d = pd.DataFrame({"a": [45, 55], "b": [5, 95], "c": [30, 70]})
stds = [stdev(d[c]) for c in d.columns]

输出:

In [87]: d
Out[87]:
    a   b   c
0  45   5  30
1  55  95  70

In [91]: stds
Out[91]: [7.0710678118654755, 63.63961030678928, 28.284271247461902]

我希望能够通过数据框的列对其进行排序 标准偏差,结果如下

    b   c   a
0   5  30  45
1  95  70  55

2 个答案:

答案 0 :(得分:3)

您正在寻找:

 d.iloc[:,(-d.std()).argsort()]
Out[8]: 
    b   c   a
0   5  30  45
1  95  70  55

答案 1 :(得分:1)

您可以像这样获得列顺序:

column_order = d.std().sort_values(ascending=False).index
# >>> column_order
# Index(['b', 'c', 'a'], dtype='object')

然后对像这样的列进行排序:

d[column_order]                                                                                                                                                                                           

    b   c   a
0   5  30  45
1  95  70  55