パンダ: dataframe を幅広から長さに変更する方法


次の基本構文を使用して、pandas DataFrame をワイド形式からロング形式に変換できます。

 df = pd. melt (df, id_vars=' col1 ', value_vars=[' col2 ', ' col3 ', ...])

このシナリオでは、 col1 は識別子として使用する列で、 col2col3などになります。は、ピボットを元に戻す列です。

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

例: Pandas DataFrame を幅広から長さに変更する

次のパンダ データフレームがあるとします。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D'],
                   ' points ': [88, 91, 99, 94],
                   ' assists ': [12, 17, 24, 28],
                   ' rebounds ': [22, 28, 30, 31]})

#view DataFrame
df

	team points assists rebounds
0 A 88 12 22
1 B 91 17 28
2 C 99 24 30
3 D 94 28 31

次の構文を使用して、この DataFrame をワイド形式からロング形式に再形成できます。

 #reshape DataFrame from wide format to long format
df = pd. melt (df, id_vars=' team ', value_vars=[' points ', ' assists ', ' rebounds '])

#view updated DataFrame
df

	team variable value
0 A points 88
1 B points 91
2 C dots 9 9
3 D dots 94
4 A assists 12
5 B assists 17
6 C assists 24
7 D assists 28
8 A rebounds 22
9 B rebounds 28
10 C rebounds 30
11 D rebounds 31

DataFrame は長い形式になりました。

「チーム」列を識別列として使用し、「ポイント」、「アシスト」、「リバウンド」列のピボットを解除しました。

var_name 引数value_name引数を使用して、新しい長いデータフレームの列名を指定することもできることに注意してください。

 #reshape DataFrame from wide format to long format
df = pd. melt (df, id_vars=' team ', value_vars=[' points ', ' assists ', ' rebounds '],
             var_name=' metric ', value_name=' amount ')

#view updated DataFrame
df

	team metric amount
0 A points 88
1 B points 91
2 C points 99
3 D dots 94
4 A assists 12
5 B assists 17
6 C assists 24
7 D assists 28
8 A rebounds 22
9 B rebounds 28
10 C rebounds 30
11 D rebounds 31

: pandas Melt()関数の完全なドキュメントはここで見つけることができます。

追加リソース

次のチュートリアルでは、Python で他の一般的な操作を実行する方法について説明します。

Pandas DataFrame に行を追加する方法
Pandas DataFrame に列を追加する方法
Pandas DataFrame で特定の値の出現をカウントする方法

コメントを追加する

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