パンダ: dataframe を幅広から長さに変更する方法
次の基本構文を使用して、pandas DataFrame をワイド形式からロング形式に変換できます。
df = pd. melt (df, id_vars=' col1 ', value_vars=[' col2 ', ' col3 ', ...])
このシナリオでは、 col1 は識別子として使用する列で、 col2 、 col3などになります。は、ピボットを元に戻す列です。
次の例は、この構文を実際に使用する方法を示しています。
例: 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 で特定の値の出現をカウントする方法