pandasの列名を変更する方法を解説します。
列名を変更する
データセット
import pandas as pd
from sklearn.datasets import load_iris
data = load_iris()
df = pd.DataFrame(
data = data.data,
columns = data.feature_names,
)
df["target"] = data.target
df
load_irisのデータを使います。
rename
print(df.columns.tolist())
df = df.rename(columns = {"sepal length (cm)": "s_length"})
print(df.columns.tolist())
# ===== output =====
# ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)', 'target']
# ['s_length', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)', 'target']
renameのcolumnsに{変更前: 変更後}という辞書型で指定します。
上記は”sepal length (cm)”を”s_length”に変えました。
複数の列名を変えたいなら、
{“sepal length (cm)”: “s_length”, “sepal width (cm)”: “s_width”}
の様にきましょう。
print(df.columns.tolist())
df.rename(columns = {"sepal width (cm)": "s_width"}, inplace = True)
print(df.columns.tolist())
# ===== output =====
# ['s_length', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)', 'target']
# ['s_length', 's_width', 'petal length (cm)', 'petal width (cm)', 'target']
このように”inplace = True”を使うと、”df = …”という書き方をしなくて良くなります。
列名をすべて変更する
print(df.columns.tolist())
df.columns = ["s_length", "s_width", "p_length", "p_width", "target"]
print(df.columns.tolist())
# ===== output =====
# ['s_length', 's_width', 'petal length (cm)', 'petal width (cm)', 'target']
# ['s_length', 's_width', 'p_length', 'p_width', 'target']
columns = list型で一気にすべての列名を変更できます。
まとめ
今回はpandasの列名を変更する方法を解説しました。
数個だけ変えたいならrenameで、全て変えたいならcolumnsで変更するのがおすすめです。
コメント