Pandasで特定の文字列を含むデータを抽出、置換する[Python]

はじめに

PandasはPythonのデータ解析ライブラリであり、データフレームを操作するための様々な機能を提供しています。本記事では、Pandasを使用して特定の文字列を含むデータを抽出したり、文字列を置換したりする方法について解説します。

特定の文字列を含むデータの抽出:str.containsを用いた方法

特定の文字列を含むデータを抽出するには、Pandasのstr.containsメソッドを使用します。このメソッドは、各要素が指定した文字列を含んでいるかどうかを判定し、結果を真偽値で返します。

以下の例では、”column_name”というカラムにおいて、文字列”keyword”を含むデータを抽出する方法を示します。

import pandas as pd
# データフレームの作成
df = pd.DataFrame({'column_name': ['apple', 'banana', 'cherry', 'durian']})
# 文字列を含むデータの抽出
filtered_df = df[df['column_name'].str.contains('a')]
print(filtered_df)

実行結果:

  column_name
0       apple
1      banana
2      durian

上記の例では、”column_name”カラムに含まれるデータのうち、”keyword”を含むデータのみが抽出されています。

正規表現を用いた複雑なパターンの文字列を含むデータの抽出

Pandasのstr.containsメソッドでは、正規表現を使用することも可能です。正規表現を使うことで、より複雑なパターンの文字列を含むデータを抽出することができます。

以下の例では、”column_name”というカラムにおいて、正規表現パターンにマッチするデータを抽出する方法を示します。

import pandas as pd
# データフレームの作成
df = pd.DataFrame({'column_name': ['apple', 'banana', 'cherry', 'durian']})
# 正規表現を用いたデータの抽出
filtered_df = df[df['column_name'].str.contains('a.*e')]
print(filtered_df)
  column_name 
0 apple

上記の例では、”column_name”カラムに含まれるデータのうち、正規表現パターン”a.*e”にマッチするデータが抽出されています。正規表現パターン”a.*e”は、”a”で始まり”e”で終わる文字列を表しています。

文字列の置換:replaceメソッドを用いた方法

Pandasのreplaceメソッドを使用すると、データフレーム内の特定の文字列を別の文字列に置換することができます。

以下の例では、”column_name”というカラムにおいて、文字列”apple”を文字列”orange”に置換する方法を示します。

import pandas as pd
# データフレームの作成
df = pd.DataFrame({'column_name': ['apple', 'banana', 'cherry', 'durian']})
# 文字列の置換
df['column_name'] = df['column_name'].replace('apple', 'orange')
print(df)

# 実行結果:

  column_name
0      orange
1      banana
2      cherry
3      durian

上記の例では、”column_name”カラム内の文字列”apple”が文字列”orange”に置換されています。

正規表現を用いた文字列の置換

replaceメソッドを使用する際には、正規表現を組み合わせることもできます。これにより、特定のパターンにマッチする文字列を置換することができます。

以下の例では、”column_name”というカラムにおいて、正規表現パターンにマッチする文字列を別の文字列に置換する方法を示します。

import pandas as pd
# データフレームの作成
df = pd.DataFrame({'column_name': ['apple', 'banana', 'cherry', 'durian']})
# 正規表現を用いた文字列の置換
df['column_name'] = df['column_name'].replace(r'^a.*e, 'fruit', regex=True)

# 実行結果:

  column_name
0       fruit
1      banana
2      cherry
3      durian

上記の例では、”column_name”カラム内の文字列のうち、正規表現パターン”^a.*e$”にマッチする文字列が文字列”fruit”に置換されています。正規表現パターン”^a.*e$”は、”a”で始まり”e”で終まり、かつその間に任意の文字が入る文字列にマッチします。

一部の文字列だけを置換する方法:str.replaceを用いた方法

Pandasのstr.replaceメソッドを使用すると、特定の文字列だけを置換することができます。このメソッドを使うと、特定のカラム内の文字列に対して、一部の文字列だけを指定した別の文字列に置換することができます。

以下の例では、”column_name”というカラムにおいて、文字列”apple”を文字列”orange”に、文字列”cherry”を文字列”strawberry”に置換する方法を示します。

import pandas as pd
# データフレームの作成
df = pd.DataFrame({'column_name': ['apple', 'banana', 'cherry', 'durian']})
# 一部の文字列だけを置換
df['column_name'] = df['column_name'].str.replace('apple', 'orange')
df['column_name'] = df['column_name'].str.replace('cherry', 'strawberry')
print(df)

# 実行結果:

  column_name
0      orange
1      banana
2  strawberry
3      durian

上記の例では、”column_name”カラム内の文字列”apple”が文字列”orange”に、文字列”cherry”が文字列”strawberry”に置換されています。

まとめ

Pandasを使用すると、特定の文字列を含むデータを抽出したり、文字列を置換したりすることが容易に行えます。str.containsメソッドやreplaceメソッドを使用することで、柔軟なデータの操作が可能となります。さらに、正規表現を組み合わせることで、より複雑なパターンの文字列を扱うこともできます。

本記事では、Pandasを使った特定の文字列の抽出と置換について解説しました。これらの方法を活用することで、データフレーム内の文字列データを効率的に操作することができます。