Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pandasで既存のDataFrameに新しい列を追加する3つの方法

はじめに

このチュートリアルでは、Pythonのデータ分析ライブラリ「pandas」において、既存のDataFrameに新しい列を追加する方法を解説します。新しい列を追加するアプローチは複数あり、それぞれに特徴があります。ここでは代表的な3つの方法を、コード例と実行結果とともに順番に見ていきましょう。


方法1:リストを使って追加する

最もシンプルなのが、Pythonのリストをそのまま列として代入する方法です。以下の手順で行います。

手順

  1. 辞書を使ってDataFrameを作成する。
  2. 新しい列のデータを含むリストを作成する。リストの長さが、すでにDataFrame内にあるデータの行数と一致している必要がある点に注意しましょう。
  3. 辞書に要素を追加するように、`dataframe['列名'] = リスト` の形式でリストをDataFrameに割り当てる。

サンプルコード

# pandasをインポート
import pandas as pd

# DataFrameを作成
data = {
    'Name': ['Hafeez', 'Aslan', 'Kareem'],
    'Age': [19, 18, 15],
    'Profession': ['Pythoneer', 'Programmer', 'Student']
}
dataframe = pd.DataFrame(data)
print('-----------新しい列を追加する前----------')
print(dataframe)
print('\n\n')

# 新しい列用のリストを作成
places = ['Nellore', 'Mumbai', 'Andhra']

# 'Places' を列名として使用し、リストを列として追加
dataframe['Places'] = places
print('---------------新しい列を追加した後------------')
print(dataframe)

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

-----------新しい列を追加する前----------
    Name    Age   Profession
0  Hafeez    19    Pythoneer
1   Aslan    18   Programmer
2  Kareem    15      Student
---------------新しい列を追加した後------------
    Name   Age    Profession     Places
0  Hafeez   19    Pythoneer    Nellore
1   Aslan   18    Programmer     Mumbai
2  Kareem   15       Student     Andhra

この方法では、常にDataFrameの末尾(右端)に新しい列が追加されます。列を挿入する位置を指定したい場合は、次に紹介する insert() メソッドを使用します。

方法2:DataFrame.insert()を使って追加する

pandasには、任意の位置に列を挿入できる組み込みメソッド insert() が用意されています。

手順

  1. 辞書を使ってDataFrameを作成する。
  2. 新しい列のデータを含むリストを作成する。リストの長さが既存データの行数と一致していることを確認する。
  3. `DataFrame.insert(index, column_name, data)` メソッドを使って、挿入位置(index)、列名、データを指定して追加する。

サンプルコード

# pandasをインポート
import pandas as pd

# DataFrameを作成
data = {
    'Name': ['Hafeez', 'Aslan', 'Kareem'],
    'Age': [19, 18, 15],
    'Profession': ['Pythoneer', 'Programmer', 'Student']
}
dataframe = pd.DataFrame(data)
print('-----------新しい列を追加する前----------')
print(dataframe)
print('\n\n')

# 新しい列用のリストを作成
places = ['Nellore', 'Mumbai', 'Andhra']

# 'Places' を列名として、insert(位置, 列名, データ) で列を挿入
dataframe.insert(2, 'Places', places)
print('---------------新しい列を追加した後------------')
print(dataframe)

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

-----------新しい列を追加する前----------
      Name  Age Profession
0   Hafeez   19  Pythoneer
1    Aslan   18 Programmer
2   Kareem   15    Student

---------------新しい列を追加した後------------
     Name  Age   Places Profession
0  Hafeez   19  Nellore  Pythoneer
1   Aslan   18   Mumbai  Programmer
2  Kareem   15   Andhra     Student

この例では、第1引数に 2 を指定しているため、「Age」と「Profession」の間(インデックス2の位置)に「Places」列が挿入されていることがわかります。位置を細かく制御したい場合に便利な方法です。

方法3:DataFrame.assign()を使って追加する

assign() メソッドも、新しい列を追加するために使えます。このメソッドは `column_name = data` の形式で引数を受け取り、そのデータを末尾の列として追加した新しいDataFrameを返します。

手順

  1. 辞書を使ってDataFrameを作成する。
  2. 新しい列のデータを含むリストを作成する。リストの長さが既存データの行数と一致していることを確認する。
  3. `DataFrame.assign(column_name = data)` メソッドを使ってデータを追加する。このメソッドは新しいDataFrameを返すため、結果を変数に格納する必要がある点に注意してください。
  4. 新しいDataFrameを出力して確認する。

サンプルコード

# pandasをインポート
import pandas as pd

# DataFrameを作成
data = {
    'Name': ['Hafeez', 'Aslan', 'Kareem'],
    'Age': [19, 18, 15],
    'Profession': ['Pythoneer', 'Programmer', 'Student']
}
dataframe = pd.DataFrame(data)
print('-----------新しい列を追加する前----------')
print(dataframe)
print('\n\n')

# 新しい列用のリストを作成
places = ['Nellore', 'Mumbai', 'Andhra']

# 'Places' を列名として、assign(column_name = data) で列を追加
new_dataframe = dataframe.assign(Places = places)
print('---------------新しい列を追加した後------------')
print(new_dataframe)

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

-----------新しい列を追加する前----------
    Name   Age    Profession
0  Hafeez   19     Pythoneer
1   Aslan   18    Programmer
2  Kareem   15        Student
---------------新しい列を追加した後------------
      Name   Age    Profession    Places
0  Hafeez    19     Pythoneer   Nellore
1   Aslan    18    Programmer    Mumbai
2  Kareem    15       Student    Andhra

assign() は元のDataFrameを変更せず、新しいDataFrameを生成するため、元のデータを保持したい場合やメソッドチェーンで処理をつなげたい場合に特に有効です。

まとめ

今回は、pandasの既存のDataFrameに新しい列を追加する3つの方法を紹介しました。

  • リスト代入:最もシンプル。末尾に列が追加される。
  • insert():挿入位置を指定できる。
  • assign():新しいDataFrameを返すため、元のデータを保持したまま処理できる。

用途に応じて使い分けることで、より効率的にデータ操作を行えるようになります。本チュートリアルについてご不明な点がある場合は、ぜひコメント欄でお知らせください。

  1. 【Python】PandasのDataFrameで列の文字列を大文字に変換する方法

    このチュートリアルでは、PandasのDataFrame(データフレーム)内の特定の列(例えば名前の列)をすべて大文字に変換する方法を解説します。主な方法は2つあり、それぞれコード例と実行結果とともに紹介します。方法1:str.upper() を使う方法Pandasでは、文字列型(object型)の列に対して .str アクセサを使うことで、Python標準の文字列メソッドを各要素に一括適用できます。大文字への変換には str.upper() を使用します。コード例# pandasパッケージをインポート import pandas as pd # DataFrame用のデータ data =

  2. Pandasで既存のDataFrameに新しい列を追加する方法

    PandasのDataFrameは2次元のデータ構造で、データが行と列からなる表形式で整然と配置されます。Pythonの辞書(dict)、リスト(list)、Seriesなどを用いて作成できます。この記事では、既存のDataFrameに新しい列を追加する方法を、具体的なコード例とともに解説します。 準備:SeriesからDataFrameを作成する まず、pandasのSeriesを使って基本的なDataFrameを作成しましょう。以下の例では、pandasのSeriesを1列だけのDataFrameに変換し、「Month_No」という列名を付けています。 コード例 import pandas