DataFrame.rename(columns={'旧カラム名': '新カラム名'})
DataFrame.rename()を使います。
変更したいカラムが1つの場合
DataFrame.rename(columns={'A': 'a'}) |
変更したいカラムが2つの場合
DataFrame.rename(columns={'A': 'a','B': 'b'}) |
サンプルコードで解説
サンプルデータ作成
in
import pandas as pd df = pd.DataFrame({'A': ['a', 'b', 'b', 'b', 'a'], print(df) |
out
A B 2000年 a 130 2001年 b 110 2002年 b 120 2003年 b 140 2004年 a 150 |
変更したいカラムが1つの場合
カラム「A」のみを「a」に変更して、printでデータフレームを表示してみましょう。
in
df=df.rename(columns={'A': 'a'}) print(df) |
カラム「A」のみが「a」に変更されています。
out[2]
a B 2000年 a 130 2001年 b 110 2002年 b 120 2003年 b 140 2004年 a 150 |
変更したいカラムが2つの場合
カラム「A」を「a」に、「B」を「b」に同時に変更してみましょう。
in[2]
df = pd.DataFrame({'A': ['a', 'b', 'b', 'b', 'a'], df=df.rename(columns={'A': 'a'}) df=df.rename(columns={'A': 'a','B': 'b'}) |
両方のカラムが変更されています。
out
a b 2000年 a 130 2001年 b 110 2002年 b 120 2003年 b 140 2004年 a 150 |
全引数のソースコード
DataFrame.rename(mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None)
・mapper, index, columns:[任意]
説明:インデックス名を変更するか、カラム名を変更するか指定。mapperはほぼ使わない。
引数に渡す値:辞書型
デフォルト:(挙動を確認したところ)indexになっている?補足で説明。
・axis:[任意]
説明:行で並び替えをするか、列で並び替えをするか。
引数に渡す値: (‘index’, ‘columns’) or number (0, 1)
デフォルト:index
・copy:[任意]
説明:行で並び替えをするか、列で並び替えをするか。
引数に渡す値:「0 か ‘index’」,「1 or ‘columns’」
デフォルト:「0」
・inplace:[任意]
説明:元のデータフレームを置き換えるかどうか。Trueが変更する、Falseは変更しない
引数に渡す値:True , False
デフォルト:False
・level[任意]
説明:カラムが2つ以上の場合に使う
引数に渡す値:(1)階層をint型で指定をすると、(2)カラム名やインデックス名を指定する
デフォルト:なし
引数の補足
mapperについて
mapperを使う場合は、axisでインデックスか、カラムか指定する必要があるっぽい。
axisでインデックスを指定をして、mapperに変更したいインデックスの名前を渡す。
in[4]
import pandas as pd df = pd.DataFrame({'A': ['a', 'b', 'b', 'b', 'a'], df=df.rename(mapper={'2000年': '1999年'},axis='index') print(df) |
「2000年」というインデックス名が「1999年」に変更されている。
out
A B 1999年 a 130 2001年 b 110 2002年 b 120 2003年 b 140 2004年 a 150 |
axisでカラムを指定すると何も変更されない(そんなカラム名がないので)。
in[4]
import pandas as pd df = pd.DataFrame({'A': ['a', 'b', 'b', 'b', 'a'], df=df.rename(mapper={'2000年': '1999年'},axis='colmuns') print(df) |
out
A B 2000年 a 130 2001年 b 110 2002年 b 120 2003年 b 140 2004年 a 150 |
axisでカラムにして、mapperで存在するカラム名を指定すると変更される。
in
import pandas as pd df = pd.DataFrame({'A': ['a', 'b', 'b', 'b', 'a'], df=df.rename(mapper={'A': 'a'},axis='colmuns') print(df) |
カラム名「A」のみ「a」に変更された。
out
a B 2000年 a 130 2001年 b 110 2002年 b 120 2003年 b 140 2004年 a 150 |
copyについて
copyをFalseにすると、もとのデータフレームも変更される。
in[5]
import pandas as pd df = pd.DataFrame({'A': ['a', 'b', 'b', 'b', 'a'], df_after=df.rename(mapper={'A': 'a'},axis='columns',copy=False)
#行が「2001年」、カラムが「B」の値を200に変更する df_after.loc['2001年','B']=200
print(df) print(df_after) |
dfのデータフレームにつき、値を変更していないのに「200」に変更されている。
out[5]
#dfのデータフレーム A B
a B |
inplaceについて
変数に代入をしなくても、元のデータフレームが置き換わっている。
in
import pandas as pd df = pd.DataFrame({'A': ['a', 'b', 'b', 'b', 'a'], df.rename(columns={'A': 'a'},inplace=True) print(df) |
dfの変数に新たに代入をしなくてもカラム名が変更されている。
out
a B 2000年 a 130 2001年 b 110 2002年 b 120 2003年 b 140 2004年 a 150 |
levelについて
インデックスが2つ以上のデータフレームを作ります。
in
df = pd.DataFrame({'A': ['a', 'b', 'b', 'b', 'a'], df = df.set_index(['C','B']) print(df) |
マルチインデックスのデータフレームができた。
out
B C A 2000年 a 130 b 110 2001年 b 120 b 140 a 150 |
一番左のインデックスを変更したい場合は、levelを「0」に指定する
in
df = df.rename(index={'2000年':'1999年'},level=0) print(df) |
一番左のインデックス「C」の「2000年」が「1999年」に変更された
out
B C A 1999年 a 130 b 110 2001年 b 120 b 140 a 150 |
左から2番めのインデックスを変更したい場合は、levelを「1」に指定する
in
df = df.rename(index={'2000年':'1999年'},level=1) print(df) |
インデックス「A」の「a」が「x」に変更された
out
B C A 1999年 x 130 b 110 2001年 b 120 b 140 x 150 |