PythonのPandasで複数列の抽出について

Python,イメージ

AI実装検定のご案内

PythonのPandasで「複数列の抽出」を行う方法について、基礎から応用まで詳しく解説します。

データ分析や前処理では頻出の操作なので、しっかり理解しておくと便利です。

目次

基本的な複数列の抽出

PandasのDataFrameから複数列を取り出すには、列名のリストを[]に渡すのが基本です。

import pandas as pd

# サンプルデータ
df = pd.DataFrame({
    "name": ["A", "B", "C"],
    "age": [23, 34, 29],
    "city": ["Tokyo", "Osaka", "Nagoya"]
})

# 複数列の抽出
subset = df[["name", "city"]]
print(subset)
  • df["name"]Series(1次元)
  • df[["name"]]DataFrame(2次元)
  • df[["name", "city"]] と書くと、複数列をまとめて取り出せる

列インデックス番号での抽出

列名ではなく、列番号(位置)で抽出したい場合は .iloc を使います。

# 0番目と2番目の列を取得
subset = df.iloc[:, [0, 2]]
print(subset)

ilocは整数インデックスでの指定なので、列名がわからないときや位置で処理したいときに便利です。

列名の範囲を指定して抽出

連続する列を範囲で抽出する場合は、スライスが使えます。

# 0〜1列目までを抽出
subset = df.iloc[:, 0:2]
print(subset)

列名リストを変数で管理する

列名が長かったり、多数の列を選びたいときは、リストを変数にしておくと便利です。

cols = ["name", "age"]
subset = df[cols]
print(subset)

列名の条件で抽出

正規表現や文字列検索で列を選ぶことも可能です。

部分一致で列を抽出

subset = df.filter(like="a")  # "a"を含む列名を抽出
print(subset)

正規表現で抽出

subset = df.filter(regex="^c")  # "c"で始まる列名を抽出
print(subset)

列を並べ替えて抽出

複数列を抽出するとき、同時に順序を変更することもできます。

subset = df[["city", "name"]]
print(subset)

応用:関数を使った列選択

動的に列を選ぶ場合は、リスト内包表記や条件を組み合わせます。

# "a"を含む列だけ選択
cols = [col for col in df.columns if "a" in col]
subset = df[cols]
print(subset)

まとめ

  • df[["col1", "col2"]] … 基本の複数列抽出
  • .iloc … 位置ベースで列抽出
  • .filter(like=…, regex=…) … 条件ベースで列抽出
  • リスト変数に列名を格納 … 大量の列や動的処理に便利

以上、PythonのPandasで複数列の抽出についてでした。

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

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