こんにちは、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
列にpython
かruby
の入ったデータを抜き出してみましょう。
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の下記のパートで学習できます。