1. ホーム
  2. python

[解決済み] Pandasのデータフレームで、インデックス付きの行をリストに基づいて並べ替える方法

2023-02-23 06:39:33

質問

以下のようなデータフレームがあります。

company  Amazon  Apple  Yahoo
name
A             0    130      0
C           173      0      0
Z             0      0    150

このようなコードで作成されています。

import pandas as pd
df = pd.DataFrame({'name' : ['A', 'Z','C'],
                   'company' : ['Apple', 'Yahoo','Amazon'],
                   'height' : [130, 150,173]})

df = df.pivot(index="name", columns="company", values="height").fillna(0)

私がしたいことは、行をソートすることです(インデックスを持つ name を持つ) 行を、あらかじめ定義されたリスト ["Z", "C", "A"] . その結果、以下のようになります。

company  Amazon  Apple  Yahoo
name
Z             0      0    150
C           173      0      0
A             0    130      0

どうすれば実現できるのでしょうか?

どのように解決するのですか?

あらかじめ定義された順序でインデックスを設定するには reindex のように

In [14]: df.reindex(["Z", "C", "A"])
Out[14]:
company  Amazon  Apple  Yahoo
Z             0      0    150
C           173      0      0
A             0    130      0

ただし、アルファベット順であれば sort_index(ascending=False)

In [12]: df.sort_index(ascending=False)
Out[12]:
company  Amazon  Apple  Yahoo
name
Z             0      0    150
C           173      0      0
A             0    130      0

以下のように、変数に代入する必要があります。

In [13]: df = df.sort_index(ascending=False)