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