pandas dataframe 並び替え sort_index,sort_values

指定した軸に沿った値で並び替える(ソートする)方法を説明する

インデックスで並び替える(sort_index)方法とカラムで並び替える(sort_values)方法がある

インデックスで並び替え【sort_index】

インデックスで並び替えるにはsort_indexを利用する

以下のDataFrameを参考に説明する

df = pd.DataFrame([['pika',88,'Electric',np.NaN],
                   ['rara',80,'Water','Ice'],
                   ['gon',82,'Normal',np.NaN],
                   ['fushi',84,'Grass','Poison'],
                   ['kage',84,'Fire','Flying'],
                   ['kame',84,'Water',np.NaN]],
                  columns=['name','level','type1','type2'],
                  index=[25,131,143,3,6,9])

# 作成したdf確認
print(df)
"""
      name  level     type1   type2
25    pika     88  Electric     NaN
131   rara     80     Water     Ice
143    gon     82    Normal     NaN
3    fushi     84     Grass  Poison
6     kage     84      Fire  Flying
9     kame     84     Water     NaN
"""

インデックスを昇順で並び替え

昇順で並び替える時は特に設定なし

# 昇順で並び替え
print(df.sort_index())
"""
      name  level     type1   type2
3    fushi     84     Grass  Poison
6     kage     84      Fire  Flying
9     kame     84     Water     NaN
25    pika     88  Electric     NaN
131   rara     80     Water     Ice
143    gon     82    Normal     NaN
"""

インデックスを降順で並び替え

降順で並び替える時はascendingをFalse設定にする

# 降順並び替え
print(df.sort_index(ascending=False))
"""
      name  level     type1   type2
143    gon     82    Normal     NaN
131   rara     80     Water     Ice
25    pika     88  Electric     NaN
9     kame     84     Water     NaN
6     kage     84      Fire  Flying
3    fushi     84     Grass  Poison
"""

カラム(列)データで並び替え【sort_values】

カラムデータで並び替えるにはsort_valuesを利用する
上記で利用したDataFrameを参考にする

カラムデータを昇順で並び替え

[level]カラムを昇順に並び替える時は以下の様に指定する

# 昇順で並び替え
print(df.sort_values(by='level'))
"""
      name  level     type1   type2
131   rara     80     Water     Ice
143    gon     82    Normal     NaN
3    fushi     84     Grass  Poison
6     kage     84      Fire  Flying
9     kame     84     Water     NaN
25    pika     88  Electric     NaN
"""

カラムデータを降順で並び替え

indexを降順に並び替えした時と同じくascendingをFalseに設定する

# 降順で並び替え
print(df.sort_values(by='level',ascending=False))
"""
      name  level     type1   type2
25    pika     88  Electric     NaN
3    fushi     84     Grass  Poison
6     kage     84      Fire  Flying
9     kame     84     Water     NaN
143    gon     82    Normal     NaN
131   rara     80     Water     Ice
"""

並び替えの対象カラムのデータが文字列(英)の場合

以下のとおり、[name]カラムを並び替えるとアルファベット順になる

# 昇順で並び替え
print(df.sort_values(by='name'))
"""
      name  level     type1   type2
3    fushi     84     Grass  Poison
143    gon     82    Normal     NaN
6     kage     84      Fire  Flying
9     kame     84     Water     NaN
25    pika     88  Electric     NaN
131   rara     80     Water     Ice
"""

コメント

タイトルとURLをコピーしました