検索キーワード「dataframe column名変更」をきっかけにして、pandasのDataFrame.rename()メソッドを使って、DataFrameの列名・カラム名を変更するコードをご紹介しました。
そもそも列名の設定されていないCSVやTSVファイルを読み込んでDataFrameを作成してから、列名・カラム名を設定したいというニーズもありそうです。
DataFrame.columns属性を使えば、あとから列名・カラム名を設定できます。
列名・カラム名のないDataFrameを作成する
まずは、以下のコードを実行して、列名・カラム名のないDataFrameを作成してください。
samp_data = [
['Alice', 100],
['Bob', 200],
['Chris', 300],
['Dave', 400],
['Eve', 500],
]
df = pd.DataFrame(data=samp_data)
元のデータに列名がなく
samp_data = [
['Alice', 100],
['Bob', 200],
['Chris', 300],
['Dave', 400],
['Eve', 500],
]
pandas.DataFrame()関数で、引数columnsを指定していないため、
df = pd.DataFrame(data=samp_data)
列名が「0」「1」の、以下のようなDataFrameが作成されます。
0 1 0 Alice 100 1 Bob 200 2 Chris 300 3 Dave 400 4 Eve 500
DataFrame.columns属性で列名・カラム名を設定
上記のDataFrameに対して、
を実行すると、以下のようなDataFrameになります。
name score 0 Alice 100 1 Bob 200 2 Chris 300 3 Dave 400 4 Eve 500
DataFrame.columns属性に設定するのはタプルでもOKです。
列数は一致させる必要がある
DataFrameの列数と、DataFrame.columns属性に設定するリストやタプルの要素数は一致している必要があります。
先ほどの2列のDataFrameに対し、
df.columns = ['id', 'name', 'score']
を実行したときには、以下のような例外が発生します。
ValueError: Length mismatch: Expected axis has 2 elements, new values have 3 elements
設定済の場合も変更できる
以下のように、列名・カラム名が既に設定されている場合でも、
name score 0 Alice 100 1 Bob 200 2 Chris 300 3 Dave 400 4 Eve 500
以下のコードを実行すれば、
列名・カラム名を変更できます。
名前 得点 0 Alice 100 1 Bob 200 2 Chris 300 3 Dave 400 4 Eve 500
Home » Python » pandasの使い方 » pandasのDataFrame.columns属性で列名・カラム名を設定する