はじめに
pandas.DataFrameのカラム名やインデックス名を変えたいけどpd.rename()
をつかうにはdf.rename(columns={'before': 'after'}, index={'before': 'after'})
のように「これまでの名前」と「これからの名前」が必要になるのが面倒。
そこで列番号(行番号)を指定して名前を変更する関数を定義してみる。
pandas
のインポート
import pandas as pd
関数の定義
def rename_iaxis(dataframe, axis, n, name):
# axis = 0ならインデックス、axis = 1ならカラムの名前をリスト化する
if axis == 0:
org_namelist = list(dataframe.index)
elif axis == 1:
org_namelist = list(dataframe.columns)
# 名前のリストのn番目をnameに変更する
new_namelist = org_namelist
new_namelist[n] = name
# dataframeのラベルを変更する
dataframe = dataframe.set_axis(new_namelist, axis = axis, inplace = False)
# データフレームを返す
return dataframe
呼び出し
# pandas DataFrameを作成する
org_dict = {"a":[1,2,3],"b":[4,5,6],"c":[7,8,9]}
org_df = pd.DataFrame(org_dict)
print(org_df)
# a b c
# 0 1 4 7
# 1 2 5 8
# 2 3 6 9
# 1番のカラム名をzに変更する
new_df = rename_iaxis(dataframe = org_df, axis = 1, n = 1, name = "z")
print(new_df)
# a z c
# 0 1 4 7
# 1 2 5 8
# 2 3 6 9
これでいくらか名前を変えるハードルが下がった???