Pandasで既存のDataFrameに新しい列を追加する3つの方法
はじめに
このチュートリアルでは、Pythonのデータ分析ライブラリ「pandas」において、既存のDataFrameに新しい列を追加する方法を解説します。新しい列を追加するアプローチは複数あり、それぞれに特徴があります。ここでは代表的な3つの方法を、コード例と実行結果とともに順番に見ていきましょう。
方法1:リストを使って追加する
最もシンプルなのが、Pythonのリストをそのまま列として代入する方法です。以下の手順で行います。
手順
- 辞書を使ってDataFrameを作成する。
- 新しい列のデータを含むリストを作成する。リストの長さが、すでにDataFrame内にあるデータの行数と一致している必要がある点に注意しましょう。
- 辞書に要素を追加するように、`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() が用意されています。
手順
- 辞書を使ってDataFrameを作成する。
- 新しい列のデータを含むリストを作成する。リストの長さが既存データの行数と一致していることを確認する。
- `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を返します。
手順
- 辞書を使ってDataFrameを作成する。
- 新しい列のデータを含むリストを作成する。リストの長さが既存データの行数と一致していることを確認する。
- `DataFrame.assign(column_name = data)` メソッドを使ってデータを追加する。このメソッドは新しい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' を列名として、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 Andhraassign() は元のDataFrameを変更せず、新しいDataFrameを生成するため、元のデータを保持したい場合やメソッドチェーンで処理をつなげたい場合に特に有効です。
まとめ
今回は、pandasの既存のDataFrameに新しい列を追加する3つの方法を紹介しました。
- リスト代入:最もシンプル。末尾に列が追加される。
- insert():挿入位置を指定できる。
- assign():新しいDataFrameを返すため、元のデータを保持したまま処理できる。
用途に応じて使い分けることで、より効率的にデータ操作を行えるようになります。本チュートリアルについてご不明な点がある場合は、ぜひコメント欄でお知らせください。
-
【Python】PandasのDataFrameで列の文字列を大文字に変換する方法
このチュートリアルでは、PandasのDataFrame(データフレーム)内の特定の列(例えば名前の列)をすべて大文字に変換する方法を解説します。主な方法は2つあり、それぞれコード例と実行結果とともに紹介します。方法1:str.upper() を使う方法Pandasでは、文字列型(object型)の列に対して .str アクセサを使うことで、Python標準の文字列メソッドを各要素に一括適用できます。大文字への変換には str.upper() を使用します。コード例# pandasパッケージをインポート import pandas as pd # DataFrame用のデータ data =
-
Pandasで既存のDataFrameに新しい列を追加する方法
PandasのDataFrameは2次元のデータ構造で、データが行と列からなる表形式で整然と配置されます。Pythonの辞書(dict)、リスト(list)、Seriesなどを用いて作成できます。この記事では、既存のDataFrameに新しい列を追加する方法を、具体的なコード例とともに解説します。 準備:SeriesからDataFrameを作成する まず、pandasのSeriesを使って基本的なDataFrameを作成しましょう。以下の例では、pandasのSeriesを1列だけのDataFrameに変換し、「Month_No」という列名を付けています。 コード例 import pandas