Pandas: dataframe をインデックスと列で並べ替えます


次の構文を使用して、パンダ データフレームをインデックスと列で並べ替えることができます。

 df = df. sort_values (by = [' column_name ', ' index '], ascending = [ False , True ])

次の例は、この構文を実際に使用する方法を示しています。

例: DataFrame をインデックスと列で並べ替えます。

次のコードは、pandas DataFrame をPointsという名前の列で並べ替えてから、インデックス列で並べ替える方法を示しています。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' id ': [1, 2, 3, 4, 5, 6, 7, 8],
                   ' points ': [25, 15, 15, 14, 20, 20, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]}). set_index (' id ')

#view first few rows
df. head ()

	points assists rebounds
id			
1 25 5 11
2 15 7 8
3 15 7 10
4 14 9 6
5 20 12 6

#sort by points and then by index
df. sort_values (by = [' points ', ' id '], ascending = [ False , True ])

	points assists rebounds
id			
8 29 4 12
1 25 5 11
7 25 9 9
5 20 12 6
6 20 9 5
2 15 7 8
3 15 7 10
4 14 9 6

結果として得られる DataFrame は、ポイントによって降順に並べ替えられ、次にインデックスによって昇順に並べ替えられます (同じポイント数を獲得したプレイヤーが 2 人いる場合)。

ascending引数を使用しない場合、各列はデフォルトの並べ替え方法として昇順を使用することに注意してください。

 #sort by points and then by index
df. sort_values (by = [' points ', ' id '])

        points assists rebounds
id			
4 14 9 6
2 15 7 8
3 15 7 10
5 20 12 6
6 20 9 5
1 25 5 11
7 25 9 9
8 29 4 12

インデックス列の名前が現在設定されていない場合は、名前を変更し、それに応じて並べ替えることができます。

 #sort by points and then by index
df. rename_axis (' index '). sort_values (by = [' points ', ' id '])

        points assists rebounds
id			
4 14 9 6
2 15 7 8
3 15 7 10
5 20 12 6
6 20 9 5
1 25 5 11
7 25 9 9
8 29 4 12

追加リソース

パンダ: 列を名前で並べ替える方法
パンダ: DataFrame を日付で並べ替えます
パンダ: 重複した行を削除する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です