pandas.DataFrameのIndex名(行名)とカラム名(列名)の変更方法をご紹介します。どちらとも関数rename()を使うだけです。
DataFrame.renameの仕様書はこちらです。
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.rename.html
キーワード引数を使った変更方法
変更前のDataFrameのデータを用意します。Index名を”a, b, c”とし、カラム名を”A, B, C”としました。
df = pd.DataFrame( data=[[0, 1, 2], [3, 4 ,5], [6, 7, 8]], index=['a', 'b', 'c'], columns=['A', 'B', 'C'], ) print(df) # A B C # a 0 1 2 # b 3 4 5 # c 6 7 8
関数rename()を使って変更します。Index名もカラム名もrename()を使い、キーワード引数でindexかcolumnsを指定し、変更内容を辞書型で渡します。
# Index名の変更 df = df.rename(index={'a': 'd', 'c': 'f'}) print(df) # A B C # d 0 1 2 # b 3 4 5 # f 6 7 8 # カラム名の変更 df = df.rename(columns={'A': 'D', 'C': 'F'}) print(df) # D B F # d 0 1 2 # b 3 4 5 # f 6 7 8
axis引数を使った変更方法
axis引数で”columns”を指定してカラム名を変更することもできます。カラム”B”の名前を”E”に変えてみます。
# DataFrameの作成 df = pd.DataFrame( data=[[0, 1, 2], [3, 4 ,5], [6, 7, 8]], index=['a', 'b', 'c'], columns=['A', 'B', 'C'], ) print(df) # A B C # a 0 1 2 # b 3 4 5 # c 6 7 8 # カラム名の変更 df = df.rename({'B': 'E'}, axis='columns') print(df) # A E C # a 0 1 2 # b 3 4 5 # c 6 7 8
次は、axis引数でIndex名を変えてみましょう。
ここで、ミスの例をお見せします。Index名は”a, b, c”となってます。Index名に存在しない”A”の名前を”D”に変更するコードを書いてみます。下が実行結果になりますが、Index名はそのままでDataFrameの中身自体も何も変わっていません。エラーになるわけでもありません。こういうエラーを防ぐ引数がerrorsです。
df = pd.DataFrame( data=[[0, 1, 2], [3, 4 ,5], [6, 7, 8]], index=['a', 'b', 'c'], columns=['A', 'B', 'C'], ) print(df) # A B C # a 0 1 2 # b 3 4 5 # c 6 7 8 df = df.rename({'A': 'D'}, axis='index') print(df) # A B C # a 0 1 2 # b 3 4 5 # c 6 7 8
errors引数を使ってみます。エラーが発生したら、プログラムの実行が止まります。errorsのデフォルトは”ignore”なので”raise”指定しないとエラーに気づくことはできません。
df = df.rename({'A': 'D'}, axis='index', errors='raise')
上のコードのように、errors=’raise’指定をして存在しないIndex名やカラム名を変更使用とすると以下のエラーになります。
KeyError: "['A'] not found in axis"
Index名”a”を”d”に変更する正しいコードは以下となります。
df = df.rename({'a': 'd'}, axis='index', errors='raise') print(df) # A B C # d 0 1 2 # b 3 4 5 # c 6 7 8