Python

pandas.DataFrameで複数カラム指定して抽出、削除する方法

pandasのデータフレームで複数カラムを抽出したり削除したりするにはどうしたらいいんだっけ?


pandas.DataFrame は表形式のデータを扱うのに便利である。

表形式データは内部的にはExcelのように行や列を持っているのだが、ときには特定の列だけ抽出したり、特定の列を削除したい場合がある。

特定の1列だけであれば df["カラム名"] で抽出、 df.drop("カラム名",axis=1) で列の削除ができる。

しかし複数のカラムに対して抽出、削除するにはどうすればいいのか。

そこで今回はpandas.DataFrameで複数カラム指定して抽出、削除する方法について紹介する。

この記事を書いている人


システムエンジニア、AIエンジニアと、IT業界で10年以上働いている中堅。PythonとSQLが得意。

記事を読むメリット

pandas.DataFrameで複数カラム指定して抽出、削除する方法がわかり、データフレームの列操作が得意になる


データ準備

データをまず用意する。

以下の内容のCSVを score_sample.csv として保存する。

CSV

id,age,score
a,12,100
b,13,105
c,12,90
d,13,85

そしてpandas.DataFrameとして read_csv() で読み込む。

DATA

import pandas as pd

df1 = pd.read_csv("score_sample.csv")
print(df1)

#   id  age  score
# 0  a   12    100
# 1  b   13    105
# 2  c   12     90
# 3  d   13     85


このデータを使って解説する。



1カラムの抽出、削除する方法

まずは1カラム(列)の抽出、削除をしてみる。

冒頭で紹介したように特定の1列だけであれば df["カラム名"] で抽出、 df.drop("カラム名",axis=1) で列の削除ができる。

カラム抽出

print(df1["id"])

# 0    a
# 1    b
# 2    c
# 3    d
# Name: id, dtype: object

print(type(df1["id"]))

# <class 'pandas.core.series.Series'>


1列だけ抽出すると、 DataFrame ではなく Series のtypeが返ってくる。


カラム削除

print(df1.drop("id",axis=1))

#    age  score
# 0   12    100
# 1   13    105
# 2   12     90
# 3   13     85



複数カラム指定して抽出、削除(エラー)

では複数カラムに対して抽出・削除をするにはどうしたらいいのか。

1列と同じやり方で複数列指定してみる。

カラム抽出

print(df1["id","age"])

# File "pandas\_libs\hashtable_class_helper.pxi", line 1626, in pandas._libs.hashtable.PyObjectHashTable.get_item
# KeyError: ('id', 'age')


"id""id","age" のように複数で指定して抽出しようとしたがエラーになった。


カラム削除

print(df1.drop("id","age",axis=1))

# TypeError: drop() got multiple values for argument 'axis'


drop() もカラム名を複数指定しようとしたらエラーになった。



pandas.DataFrameで複数カラム指定して抽出、削除する方法

エラーにならずにpandas.DataFrameで複数カラム指定して抽出、削除するにはどうするのか。

答えは「配列としてカラム名を渡す」である。

カラム抽出

print(df1[["id","age"]])

#   id  age
# 0  a   12
# 1  b   13
# 2  c   12
# 3  d   13

print(type(df1[["id","age"]]))

# <class 'pandas.core.frame.DataFrame'>


"id"["id","age"] のように配列形式で指定して抽出すると DataFrame形式で指定したカラムのみ抽出できる。


カラム削除

print(df1.drop(["id","age"],axis=1))

#    score
# 0    100
# 1    105
# 2     90
# 3     85


同じように drop() にも配列形式でカラム名を渡せば複数カラムを削除することが可能。



まとめ

今回はpandas.DataFrameで複数カラム指定して抽出、削除する方法について紹介した。

ポイントは以下の通り。

ココがポイント

  • 複数カラム抽出: df[["カラム名1","カラム名2"]]
  • 複数カラム削除: df.drip(["カラム名1","カラム名2"],axis=1)
  • 複数カラムは配列で指定すること


複数カラムを指定するときは配列(リスト)形式と覚えておくといいですね



他にもpandas関連の記事もあるので、もし気になるものがあれば見てみて欲しい

ITipsと同じようなブログを作る方法

ブログに興味がありますか?

もしブログに興味がある場合は↓このページ↓を参考にすれば、ITipsと同じ構成でブログを作ることができます

サーバー、ドメイン、ASPと【ブログに必要なものは全て】このページに書きました。
同じ構成でブログ作るのはいいけど、記事はマネしないでネ (TДT;)

ランキング参加中

にほんブログ村 IT技術ブログへ

他にもブログやSNSで紹介してくれると励みになります。

はてブのコメントで酷評されると泣きます(´;ω;`)

-Python
-

© 2022 ITips