Pandas Dataframe のインデックスとして列を設定する

  1. Pandas DataFrame で列をインデックスにするには set_index() を使用する
  2. read_excelread_csvindex_col パラメータを使って、Pandas DataFrame のインデックスとして列を設定する

通常、Pandas Dataframe では、0 からオブジェクトの長さまでの通し番号がデフォルトでインデックスとして設定されています。また、DataFrame の特定の列をインデックスにすることもできます。pandas に用意されている set_index() を利用することもできますし、エクセルや CSV ファイルから DataFrame をインポートする際に列のインデックスを指定することもできます。

Pandas DataFrame で列をインデックスにするには set_index() を使用する

set_index() はリスト、系列、DataFrame に適用してインデックスを変更することができます。DataFrame の場合、set_index() は複数の列をインデックスにすることもできます。

DataFrame の場合は、複数の列をインデックスにすることもできます。

import pandas as pd
import numpy as np

colnames = ['Name','Time','Course']
df = pd.DataFrame([['Jay',10,'B.Tech'],
                   ['Raj',12,'BBA'],
                   ['Jack',11,'B.Sc']], columns = colnames)

print(df)

出力:

   Name  Time  Course
0   Jay    10  B.Tech
1   Raj    12     BBA
2  Jack    11    B.Sc

列をインデックスにするための構文。

dataframe.set_index(Column_name,inplace = True)

set_index() を用いて単一の列をインデックスにします。

import pandas as pd
import numpy as np

colnames = ['Name','Time','Course']
df = pd.DataFrame([['Jay',10,'B.Tech'],
                   ['Raj',12,'BBA'],
                   ['Jack',11,'B.Sc']], columns = colnames)

df.set_index('Name', inplace = True)

print(df)

出力:

      Time  Course
Name              
Jay     10  B.Tech
Raj     12     BBA
Jack    11    B.Sc

複数の列をインデックスにします。

import pandas as pd
import numpy as np

colnames = ['Name','Time','Course']
df = pd.DataFrame([['Jay',10,'B.Tech'],
                   ['Raj',12,'BBA'],
                   ['Jack',11,'B.Sc']], columns = colnames)

df.set_index(['Name','Course'], inplace = True)

print(df)

出力:

             Time
Name Course      
Jay  B.Tech    10
Raj  BBA       12
Jack B.Sc      11

read_excelread_csvindex_col パラメータを使って、Pandas DataFrame のインデックスとして列を設定する

Excel や CSV ファイルから DataFrame を読み込む際に、DataFrame のインデックスにしたい列を指定することができます。

例:

import pandas as pd
import numpy as np
df = pd.read_excel("data.xlsx",index_col = 2)
print(df)

出力:

        Name  Time
Course            
B.Tech  Mark    12
BBA     Jack    10
B.Sc     Jay    11

関連記事 - Pandas DataFrame

  • Pandas DataFrame のセルの値を取得する方法
  • Pandas Series を DataFrame に変換