PandasのDataFrameは、Pythonでのデータ操作に不可欠です。多くの場合、より明確で一貫性のある名前、または他のデータセットとの互換性のために、列名を調整する必要があります。Pandasはこれを実現するためのいくつかの効率的な方法を提供しています。この記事では、DataFrame.rename()
、DataFrame.columns
、DataFrame.set_axis()
の3つの一般的なアプローチについて説明します。
目次
DataFrame.rename()
による列名の変更
rename()
メソッドは、個々の列または列のグループを選択的に名前変更できるため、最も柔軟性があります。キーが古い列名、値が新しい列名を表す辞書を使用します。
import pandas as pd
# サンプルDataFrame
data = {'old_col1': [1, 2, 3], 'old_col2': [4, 5, 6], 'old_col3': [7, 8, 9]}
df = pd.DataFrame(data)
print("元のDataFrame:n", df)
# DataFrame.rename()を使用した列名の変更
df = df.rename(columns={'old_col1': 'new_col1', 'old_col3': 'new_col3'})
print("n列名変更後のDataFrame:n", df)
# inplace=Trueを使用したインプレースでの名前変更
df.rename(columns={'old_col2': 'new_col2'}, inplace=True)
print("nインプレースでの名前変更後のDataFrame:n", df)
このコードスニペットは、’old_col1’を’new_col1’に、’old_col3’を’new_col3’に選択的に名前変更します。inplace=True
引数を使用すると、DataFrameが直接変更されるため、再代入の必要がなくなります。
DataFrame.columns
による列名の変更
このメソッドは、すべての列を同時に名前変更するための簡単な方法を提供します。columns
属性に新しい列名のリストを直接代入します。このメソッドは簡潔ですが、選択的な名前変更には柔軟性に欠けます。
import pandas as pd
# サンプルDataFrame
data = {'old_col1': [1, 2, 3], 'old_col2': [4, 5, 6], 'old_col3': [7, 8, 9]}
df = pd.DataFrame(data)
print("元のDataFrame:n", df)
# DataFrame.columnsを使用した列名の変更
new_columns = ['new_col1', 'new_col2', 'new_col3']
df.columns = new_columns
print("n列名変更後のDataFrame:n", df)
このコードは、目的の名前を持つリストnew_columns
を作成し、それをdf.columns
に代入します。重要なのは、new_columns
の長さがDataFrameの列数と正確に一致する必要があることです。
DataFrame.set_axis()
による列名の変更
set_axis()
メソッドは、すべての列を一度に変更するための代替手段を提供します。DataFrame.columns
に似ていますが、軸(列の場合は1、行の場合は0)を明示的に指定します。
import pandas as pd
# サンプルDataFrame
data = {'old_col1': [1, 2, 3], 'old_col2': [4, 5, 6], 'old_col3': [7, 8, 9]}
df = pd.DataFrame(data)
print("元のDataFrame:n", df)
# DataFrame.set_axis()を使用した列名の変更
new_columns = ['new_col1', 'new_col2', 'new_col3']
df = df.set_axis(new_columns, axis=1)
print("n列名変更後のDataFrame:n", df)
この例では、axis=1
を使用してset_axis()
ですべての列の名前を変更します。DataFrame.columns
と同様に、すべての列名を置き換えます。
要約すると、各メソッドは独自の使用方法を提供します。DataFrame.rename()
は選択的な名前変更に最適ですが、DataFrame.columns
とDataFrame.set_axis()
はすべての列の名前変更に効率的です。ニーズに最適なメソッドを選択してください。