😎
【Pandas tips】Pandasで行の平均値ソート
ソースコード
元々mean列を作ったりしていたが、df.mean(axis=1).sort_values(ascending=False).keys()
で順番の直接抽出ができる。ちょっと長いので、関数形式で公開。
def sort_row_mean(df):
return df.loc[df.mean(axis=1).sort_values(ascending=False).keys(), :]
例
irisデータセットの平均値が高い順にソートしてみる。
- ソースコード
import pandas as pd
from sklearn import datasets
def sort_row_mean(df):
return df.loc[df.mean(axis=1).sort_values(ascending=False).keys(), :]
iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
sort_row_mean(df)
- 出力
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | |
---|---|---|---|---|
117 | 7.7 | 3.8 | 6.7 | 2.2 |
131 | 7.9 | 3.8 | 6.4 | 2.0 |
118 | 7.7 | 2.6 | 6.9 | 2.3 |
109 | 7.2 | 3.6 | 6.1 | 2.5 |
105 | 7.6 | 3.0 | 6.6 | 2.1 |
... | ... | ... | ... | ... |
42 | 4.4 | 3.2 | 1.3 | 0.2 |
8 | 4.4 | 2.9 | 1.4 | 0.2 |
38 | 4.4 | 3.0 | 1.3 | 0.2 |
13 | 4.3 | 3.0 | 1.1 | 0.1 |
41 | 4.5 | 2.3 | 1.3 | 0.3 |
Discussion