note.nkmk.me

pandas.DataFrameの行名・列名の変更

Date: 2015-07-29 / Modified: 2017-08-17 / tags: Python, pandas
このエントリーをはてなブックマークに追加

DataFrame.rename()

DataFrame.rename()を使うと任意の行名・列名を変更できる。

まず、元となるDataFrameを作成。

import pandas as pd

df = pd.DataFrame({'A': [11, 21, 31],
                   'B': [12, 22, 32],
                   'C': [13, 23, 33]},
                  index=['ONE', 'TWO', 'THREE'])

print(df)
#         A   B   C
# ONE    11  12  13
# TWO    21  22  23
# THREE  31  32  33

DataFrame.rename()の引数columnsindexに辞書型で元の値と新しい値を指定する。

df_new = df.rename(columns={'A': 'a'}, index={'ONE': 'one'})

print(df)
#         A   B   C
# ONE    11  12  13
# TWO    21  22  23
# THREE  31  32  33

print(df_new)
#         a   B   C
# one    11  12  13
# TWO    21  22  23
# THREE  31  32  33

複数の行名・列名を変更

複数の行名・列名の値を一括で変更することもできる。

また、行名・列名のいずれかだけを変更したい場合は、引数columnsindexのどちらか一方だけを指定すればよい。

df_new_multi = df.rename(columns={'A': 'a', 'C': 'c'})

print(df_new_multi)
#         a   B   c
# ONE    11  12  13
# TWO    21  22  23
# THREE  31  32  33

元のオブジェクトを変更

デフォルトでは元のDataFrameは変更されず、新しいDataFrameが返される。

引数inplaceTrueにすると、元のDataFrameが変更される。新しいDataFrameは返されず、返り値はNone

df_new = df.rename(columns={'A': 'a'}, index={'ONE': 'one'}, inplace=True)

print(df)
#         a   B   C
# one    11  12  13
# TWO    21  22  23
# THREE  31  32  33

print(df_new)
# None

ラムダ式で一括処理

ラムダ式で一括処理することもできる。

大文字にしたり、小文字にしたり。

df_new = df.rename(columns=lambda s: s.upper(), index=lambda s: s.lower())

print(df_new)
#         A   B   C
# one    11  12  13
# two    21  22  23
# three  31  32  33

繰り返したり、末尾に追加したり。

df_new = df_new.rename(columns=lambda s: s*3, index=lambda s: s + '!!')

print(df_new)
#          AAA  BBB  CCC
# one!!     11   12   13
# two!!     21   22   23
# three!!   31   32   33

DataFrame.indexとDataFrame.columns

行名・列名をすべて更新

行名・列名を全部新しい値にするのであれば、DataFrame.rename()よりも、DataFrame.indexDataFrame.columnsを再指定するほうが簡単。

df.index = [1, 2, 3]
df.columns = ['a', 'b', 'c']

print(df)
#     a   b   c
# 1  11  12  13
# 2  21  22  23
# 3  31  32  33

このとき、リストのサイズが異なっているとエラーになるので注意。

スポンサーリンク
シェア
このエントリーをはてなブックマークに追加

関連カテゴリー

関連記事