【Pandas DataFrame】melt()関数で、データフレームを特定の列や複数の列に基づいて透過的に整形することができます。

python

pandasのDataFrameの機能の一つに、melt()関数があります。この関数を使うと、データフレームを特定の列や複数の列に基づいて透過的に整形することができます。

melt()関数は、以下のような引数を取ります。

  • frame : 整形したいデータフレーム
  • id_vars : 整形したくない列の名前を指定
  • value_vars : 整形したい列の名前を指定
  • var_name : 整形後の列の名前を指定
  • value_name : 整形後の値の名前を指定

以下の例では、データフレームdfid_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

この例では、元のデータフレームdfA列はそのまま残し、BCD列をvar列とval列に整形しました。

タイトルとURLをコピーしました