pandasのDataFrameの機能の一つに、melt()関数があります。この関数を使うと、データフレームを特定の列や複数の列に基づいて透過的に整形することができます。
melt()関数は、以下のような引数を取ります。
- frame : 整形したいデータフレーム
- id_vars : 整形したくない列の名前を指定
- value_vars : 整形したい列の名前を指定
- var_name : 整形後の列の名前を指定
- value_name : 整形後の値の名前を指定
以下の例では、データフレームdf
をid_vars
に'A'
を指定し、value_vars
に['B', 'C', 'D']
を指定して、melt()
関数を使ってデータフレームを整形しています。var_name
に'var'
、value_name
に'val'
を指定しています。
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9],
'D': [10, 11, 12]})
df_melt = pd.melt(frame=df,
id_vars='A',
value_vars=['B', 'C', 'D'],
var_name='var',
value_name='val')
print(df_melt)
A var val
0 1 B 4
1 2 B 5
2 3 B 6
3 1 C 7
4 2 C 8
5 3 C 9
6 1 D 10
7 2 D 11
8 3 D 12
上記のコードを実行すると、以下のようなデータフレームが出力されます。
A var val
0 1 B 4
1 2 B 5
2 3 B 6
3 1 C 7
4 2 C 8
5 3 C 9
6 1 D 10
7 2 D 11
8 3 D 12
この例では、元のデータフレームdf
のA
列はそのまま残し、B
、C
、D
列をvar
列とval
列に整形しました。