11
我在熊貓中有一個數據框,我想根據它的列的平均值(或者它們的std)來對它的列進行排序(即得到一個新的數據框或視圖)值)。文檔談到了sorting by label or value,但我無法找到任何關於自定義排序方法。熊貓:按列的平均值對列進行排序
我該怎麼做?
我在熊貓中有一個數據框,我想根據它的列的平均值(或者它們的std)來對它的列進行排序(即得到一個新的數據框或視圖)值)。文檔談到了sorting by label or value,但我無法找到任何關於自定義排序方法。熊貓:按列的平均值對列進行排序
我該怎麼做?
可以使用mean
數據框方法和系列sort_values
方法:
In [11]: df = pd.DataFrame(np.random.randn(4,4), columns=list('ABCD'))
In [12]: df
Out[12]:
A B C D
0 0.933069 1.432486 0.288637 -1.867853
1 -0.455952 -0.725268 0.339908 1.318175
2 -0.894331 0.573868 1.116137 0.508845
3 0.661572 0.819360 -0.527327 -0.925478
In [13]: df.mean()
Out[13]:
A 0.061089
B 0.525112
C 0.304339
D -0.241578
dtype: float64
In [14]: df.mean().sort_values()
Out[14]:
D -0.241578
A 0.061089
C 0.304339
B 0.525112
dtype: float64
然後你就可以使用reindex_axis
重新排序列:
In [15]: df.reindex_axis(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
注:在早期版本的大熊貓,sort_values
曾經是order
,但order
是d作爲0.17的一部分被推薦使用,以便與其他排序方法更一致。
添加到食譜? – Jeff
現在似乎不推薦使用'order',而應該使用'sort_values'(在版本0.17.0中添加)。 – bli
@bli謝謝!我真的需要寫一個腳本來更新所有熊貓的答案(我懷疑有幾百個可以做更新)...... –