PythonでPandas DataFrameのカラムの名前を変更する方法

Pandas はデータ解析とデータ操作のための Python ライブラリです。

Pandasのほぼすべての操作は、「DataFrame」を中心に展開されます。

データフレームは、2次元のテーブルを抽象的に表現したもので、様々なデータを格納することができます。

また、すべてのカラムに名前を付けることができます。

そのため、DataFrameを使うときには、カラムを属性やフィールドと呼ぶことがよくあります。

この記事では、既に存在する DataFrame のカラムの名前を変更する方法について説明します。

DataFrame` のカラム名を操作するには、2つのオプションがあります。

    1. 既存の DataFrame のカラムの名前を変更する。
    1. 新しい DataFrame を作成する際に、カスタムカラム名を割り当てる。

それでは、両方の方法について見ていきましょう。

既存のデータフレームの列名の変更

以下にサンプルとして DataFrame を用意しました。

import pandas as pd
data = {'Name':['John', 'Doe', 'Paul'], 
        'age':[22, 31, 15]} 
df = pd.DataFrame(data)


DataFramedf` は以下のようなものです。

この DataFrame のカラムの名前を変更するには、 rename() メソッドを使用します。

    1. columns 引数として、元のカラム名と新しいカラム名のマッピングをキーと値のペアで格納した辞書を指定します。
    1. inplace 引数として boolean 値を指定します。この値が True に設定されると、元の Dataframe に対して変更が加えられます。

ここでは、DataFrame のカラム名を Name, age から First Name, Age に変更してみましょう。

df.rename(columns = {'Name' : 'First Name', 'age' : 'Age'}, inplace = True)


これで、dfの中身は

データフレーム作成時の列名の割り当て

次に、DataFrame を作成する際にカラム名を割り当てる方法について説明します。

これは、特に csv ファイルから DataFrame を作成する際に、ヘッダーカラムの名前を無視して独自のカラム名を付けたい場合に便利です。

引数 names にリストを渡すことで、既に存在するヘッダーカラムを独自のカラムで上書きすることができる。

リストには、データ中のすべてのカラムの名前を指定する必要があり、そうでない場合は例外がスローされる。

もし、いくつかのカラムの名前だけを変更したい場合は、 DataFrame を作成した後に、 rename メソッドを使用したほうがよいことに注意してください。

ここでは、out.csv を用いて、以下のような内容の DataFrame を作成することにする。

Name, age
John, 22
Doe, 31
Paul, 15


ファイルの最初の行はヘッダー行であり、カラム名を含んでいることに注意してください。

Pandas はデフォルトで、最初の行から DataFrame にカラム名を割り当てています。

したがって、ヘッダ行を無視して DataFrame を作成し、 names 引数に渡すリストでカラム名を指定するように指定します。

columns = ['First Name', 'Age']
df = pd.read_csv('out.csv', header = None, names = columns)
df


この結果、以下のようになります。

もう一つの方法は、古いコンストラクタである DataFrame() の中でカラム名を指定する方法です。

1 つの違いは、列名のリストを受け取るパラメータが、 names ではなく column と呼ばれることです。

import numpy as np


new_columns = ['First Name', 'Age']
data = np.array([["Nicholas", 23],["Scott", 32],["David", 25]])


df = pd.DataFrame(data, columns = new_columns)


この結果、別の DataFrame が生成されます。

結論

この記事では、DataFrame のカラムに名前をつけたり、名前を変更する方法について簡単に説明しました。

DataFrameのインスタンスを生成する際に名前を付けるか、rename()` メソッドで後から名前を変更します。

タイトルとURLをコピーしました