Pandasのdataframeでインデックスをカラム(列、行)に変換する方法

スポンサーリンク

このPythonチュートリアルでは、DataFrameのインデックスをカラムに変換する方法について説明します。

また、複数インデックスのDataFrameの複数レベルのインデックスをその複数カラムに変換する方法についても見ていきます。

それでは、はじめましょう。

スポンサーリンク

pandas DataFrameのインデックスとは?

Pandasはデータ解析に広く利用されている堅牢なPythonライブラリです。

PandasはDataFrameと呼ばれるデータ構造を提供し、データを行と列の形式で保存します。

pandasのDataFrameオブジェクトは複数のインデックスのレベルを持つことができ、その場合MultiIndex DataFrameと呼ばれます。

panda DataFrameオブジェクトを作成すると、デフォルトでは0から行数-1までのインデックス値がDataFrameの各行に対して順番に割り当てられます。

しかし、pandasの DataFrame.set_index() 関数を用いて、pandas DataFrameオブジェクトの各行にインデックス値を手動で設定することも可能です。

以下の2つのメソッドを使って、pandas DataFrameオブジェクトの1レベル以上のインデックスをそのカラムに変換することができます

DataFrameのインデックスをカラムに変換する処理を示すために、まずpandas DataFrameオブジェクトを作成してみましょう。

こちらもお読みください。

PandasのDataFrameのインデックス作成。

Pandasデータフレームのインデックスをカラムに変換するメソッド

# Import pandas Python module
import pandas as pd
 
# Create a pandas DataFrame object
df = pd.DataFrame({'Dept': ['ECE', 'ICE', 'IT', 'CSE', 'CHE'],
                    'GPA': [8.15, 9.03, 7.85, 8.55, 9.45],
                    'Name': ['Kirti', 'Sarthak', 'Anubhav', 'Ranjan', 'Kartik'],
                    'RegNo': [111, 112, 113, 114, 115]})
 
# Set 'RegNo' as index of the pandas DataFrame
df.set_index('RegNo', inplace=True)                   
 
# Print the created pandas DataFrame object
print('Sample pandas DataFrame:
'
)
print(df)

結果は以下の通りです。

Sample pandas DataFrame:
 
      Dept   GPA     Name
RegNo                   
111    ECE  8.15    Kirti
112    ICE  9.03  Sarthak
113     IT  7.85  Anubhav
114    CSE  8.55   Ranjan
115    CHE  9.45   Kartik

方法1:新しいDataFrameのカラムを作成し、インデックスを渡します。

これは、DataFrameのインデックスをカラムに変換する最もシンプルな方法です。

この方法では、DataFrameに新しい列を作成し、pandas DataFrameクラスの DataFrame.indexメソッドを使用してインデックスを渡します。

このメソッドを実装するためのPythonコードを見てみましょう。

# Method 1
 
# Convert the index of the sample DataFrame into column
# Using the new column method
df['Roll'] = df.index                   
 
# Print the modified pandas DataFrame
print('Modified pandas DataFrame:
'
)
print(df)

結果は以下の通りです。

Modified pandas DataFrame:
 
      Dept   GPA     Name  Roll
RegNo                         
111    ECE  8.15    Kirti   111
112    ICE  9.03  Sarthak   112
113     IT  7.85  Anubhav   113
114    CSE  8.55   Ranjan   114
115    CHE  9.45   Kartik   115

方法2:pandasのDataFrame.reset_index()関数を使用します。

これは、DataFrameのインデックスの1つ以上のレベルを1つ以上のカラムにするために広く使用されている方法です。

この方法では、pandasのDataFrameクラスの DataFrame.reset_index() 関数を使用します。

このメソッドを実装するためのPythonコードを記述してみましょう。

# Method 2
 
# Convert the index of the sample DataFrame into column
# Using the DataFrame.reset_index() function
df.reset_index(inplace=True)                   
 
# Print the modified pandas DataFrame
print('Modified pandas DataFrame:
'
)
print(df)

結果は以下の通りです。

Modified pandas DataFrame:
 
   RegNo Dept   GPA     Name
0    111  ECE  8.15    Kirti
1    112  ICE  9.03  Sarthak
2    113   IT  7.85  Anubhav
3    114  CSE  8.55   Ranjan
4    115  CHE  9.45   Kartik

MultiIndex DataFrameの1つまたは複数のレベルをカラムに変換する

まず、サンプルDataFrameの複数レベルのインデックスとして RegNoNameDataFrame.set_index() 関数で設定し、上記のサンプルDataFrameをMultiIndex DataFrameに変換してみましょう。

# Convert the sample DataFrame into MultiIndex DataFrame
# By setting the 'RegNo' and 'Name' as Multi-level index
df.set_index(['RegNo', 'Name'], inplace=True)                   
 
# Print the modified pandas DataFrame
print('Modified Sample pandas DataFrame:
'
)
print(df)

結果は以下の通りです。

出力:

Modified Sample pandas DataFrame:
 
              Dept   GPA
RegNo Name             
111   Kirti    ECE  8.15
112   Sarthak  ICE  9.03
113   Anubhav   IT  7.85
114   Ranjan   CSE  8.55
115   Kartik   CHE  9.45

次に、DataFrame.reset_index()関数を使用して、サンプルのMultiIndex DataFrameのインデックスレベルの1つだけを列に変換するPythonコードを記述してみましょう。

# Convert one level of the MultiIndex DataFrame into column
# Using the DataFrame.reset_index() function
df.reset_index(level='Name', inplace=True)                 
 
# Print the modified pandas DataFrame
print('Modified pandas DataFrame:
'
)
print(df)

結果を出力すると、以下の様になります。

Modified pandas DataFrame:
 
          Name Dept   GPA
RegNo                   
111      Kirti  ECE  8.15
112    Sarthak  ICE  9.03
113    Anubhav   IT  7.85
114     Ranjan  CSE  8.55
115     Kartik  CHE  9.45

まとめ

この記事では、pandas DataFrameのインデックスをカラムに変換する方法を学びました。

また、MultiIndex DataFrameのインデックスの1つ以上のレベルをカラムに変換する方法を学びました。

以上のことを理解し、自分のpandas DataFrameで実験する準備ができていることを願っています。

お読みいただきありがとうございます。

Pythonプログラミングに関連する素晴らしい学習コンテンツにご期待ください。

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