Pandasのデータフレームのカラムの追加と削除について

Python,イメージ

AI実装検定のご案内

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.whereapply を使って条件分岐に基づく新しいカラムを作ることも多いです。

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のデータフレームのカラムの追加と削除についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次