2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pandasで特定の複数列(カラム)を抽出する

Last updated at Posted at 2020-03-18

TL;DR

strアクセサを用いることで部分一致で簡単にカラム指定のマスクが作れる。(例: df.columns.str.contains('任意の列名'))

複数列をまとめて抽出する

ポイントは

  • columnsを参照してその中に含まれる文字列を参照する。
  • 最終的に出来上がるのは列を含むか否かのbooleanを含んだリストになる

なので、活用するなら

# この場合は任意の複数列を取り出す
include_list = df.columns[df.columns.str.contains('hoge_') * df.columns.str.contains('fuga_')]
df_prep = df[include_list]
# この場合は任意の複数列以外を取り出す
# Point: チルダ(~)を使うことでマスクを反転させている
exclude_list = df.columns[~df.columns.str.contains('hoge_') * ~df.columns.str.contains('fuga_')]
df_prep = df[exclude_list]

またオプションには case (大文字小文字の区別), regex (正規表現パターンの利用) があるので、柔軟につかえる。

strアクセサの応用

今回はカラムに対して行ったが、たとえば特定の列内から任意の文字列を抽出したいときにも同様にできる。

df['user'].str.contains('Ruri')
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?