PandasのDataFrameにおける「カラムの追加」と「カラムの削除」は、データ加工や前処理の中でとてもよく使われる操作です。
ここでは、実用的なサンプルコードとともに詳しく解説します。
目次
カラムの追加方法
直接代入で追加
もっとも基本的な方法は、新しいカラム名を指定して代入することです。
import pandas as pd
df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie"],
"age": [25, 30, 35]
})
# 直接代入で追加
df["country"] = ["USA", "UK", "Canada"]
print(df)
既存カラムを使って計算して追加
既存のカラムから計算結果を新しいカラムに入れることができます。
import pandas as pd
df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie"],
"age": [25, 30, 35]
})
# "age"の2倍を新しいカラムに追加
df["age_x2"] = df["age"] * 2
print("=== 計算で追加 ===")
print(df)
assign()
を使って追加
メソッドチェーンで扱いたいときに便利です。
import pandas as pd
df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie"],
"age": [25, 30, 35]
})
# assignを使うとメソッドチェーンで扱いやすい
df = df.assign(is_adult=df["age"] >= 18)
print("=== assignで追加 ===")
print(df)
条件分岐を利用して追加
numpy.where
や apply
を使って条件分岐に基づく新しいカラムを作ることも多いです。
import pandas as pd
import numpy as np
df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie"],
"age": [25, 30, 35]
})
# 年齢で条件分岐してラベルを付与
df["age_group"] = np.where(df["age"] >= 30, "30代以上", "20代")
print("=== 条件分岐で追加 ===")
print(df)
カラムの削除方法
drop()
を使う
最も一般的な方法です。
import pandas as pd
df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie"],
"age": [25, 30, 35],
"country": ["USA", "UK", "Canada"],
"age_x2": [50, 60, 70]
})
# "age_x2"を削除
df = df.drop(columns=["age_x2"])
# 複数削除する場合
df = df.drop(columns=["country"])
print("=== dropで削除 ===")
print(df)
del
文を使う
Pythonの辞書操作のように削除できます。
import pandas as pd
df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie"],
"age": [25, 30, 35],
"age_group": ["20代", "30代以上", "30代以上"]
})
# del文で削除
del df["age_group"]
print("=== delで削除 ===")
print(df)
pop()
を使う
削除した上で、そのカラムを返してくれます。
import pandas as pd
df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie"],
"age": [25, 30, 35],
"country": ["USA", "UK", "Canada"]
})
# popで削除しつつ取り出す
age_series = df.pop("age")
print("=== popで削除 ===")
print("DataFrame:")
print(df)
print("\n取り出したSeries:")
print(age_series)
inplaceオプションの違い
drop()
などには inplace=True
が指定可能です。
import pandas as pd
df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie"],
"age": [25, 30, 35],
"country": ["USA", "UK", "Canada"]
})
# inplace=Trueで直接DataFrameを変更
df.drop(columns=["country"], inplace=True)
print("=== inplaceで削除 ===")
print(df)
inplace=True
: 元のDataFrameを直接変更するinplace=False
(デフォルト): 新しいDataFrameを返す(元は変わらない)
※最近のPandasでは「inplaceを使わず代入する方法」が推奨されています。
実践的な使い分け
- 新しい特徴量を作るとき →
df["new"] = ...
やassign()
- 不要な列をまとめて削除するとき →
drop(columns=[...])
- 列を削除して利用したいとき →
pop()
- 一時的に削除して確認 →
drop(..., inplace=False)
を使って元を保持する
まとめ
- 追加:
df["col"] = ...
,assign()
, 計算列や条件分岐で作成 - 削除:
drop(columns=...)
,del
,pop()
- 習慣:
inplace=True
よりも「新しい変数に代入する」書き方が推奨
以上、Pandasのデータフレームのカラムの追加と削除についてでした。
最後までお読みいただき、ありがとうございました。