PyQオフィシャルブログ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

pandasで特定のパターンを抜き出すにはどうすればいいですか? - containsを使って特定の文字列が入った行を抜き出す方法

f:id:nana_yu:20181009113212p:plain こんにちは、PyQ開発チームの斎藤です。

PyQへの質問で、pandas関連の質問をご紹介します。 なお、質問内容は、適宜アレンジしています。

質問

特定の文字列が入った行を抜き出したい

具体例を通して見ていきましょう。

df = pd.DataFrame(
    [['python', 1991], ['java', 1995], ['ruby', 1995], ['python3', 2008]],
    columns=['name', 'year'])
df
name year
0 python 1991
1 java 1995
2 ruby 1995
3 python3 2008

dfに言語と登場時期が入っています。

この中から、name列にpythonrubyの入ったデータを抜き出してみましょう。 strアクセサからcontainsを使ってできます。

df[df.name.str.contains('(python|ruby)')]
name year
0 python 1991
2 ruby 1995
3 python3 2008

列名.strをstrアクセサといい、Seiresを文字列のように扱えます。

※ 正規表現のパターンを'(?:python|ruby)'とすると、警告が出ないようになります。

containsでは正規表現を使えます。 (パターン1|パターン2)は、パターン1または、パターン2とマッチします。

正規表現を使えば、色々できそうですね。

正規表現は、PyQの下記のパートで学習できます。

https://pyq.jp/quests/#re

Copyright ©2017-2018 BeProud Inc. All rights reserved.