Pandasのデータフレームで部分一致を使用することは、特定の列の値に対して特定の部分文字列が含まれているかどうかをチェックするための強力な方法です。
以下にPandasで部分一致を利用する方法を詳しく説明します。
部分一致を使った基本的な検索
部分一致を使ってデータフレームの列をフィルタリングするためには、str.contains
メソッドを使用します。
このメソッドは、文字列の列に対して部分一致を検索し、ブール値のシリーズを返します。
このシリーズをデータフレームに適用することで、部分一致する行を抽出することができます。
例: 部分一致を使ったフィルタリング
import pandas as pd
# サンプルデータを作成
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David'],
'city': ['New York', 'Los Angeles', 'New Orleans', 'Denver']
}
df = pd.DataFrame(data)
# 'city'列に'New'が含まれている行をフィルタリング
filtered_df = df[df['city'].str.contains('New')]
print(filtered_df)
このコードは、’city’列に’New’が含まれる行を抽出します。
結果は次のようになります。
name city
0 Alice New York
2 Charlie New Orleans
大文字・小文字の区別を無視する検索
デフォルトでは、str.contains
メソッドは大文字・小文字を区別します。
大文字・小文字を無視したい場合は、case=False
パラメータを指定します。
# 大文字・小文字を無視して'city'列に'new'が含まれている行をフィルタリング
filtered_df = df[df['city'].str.contains('new', case=False)]
print(filtered_df)
正規表現を使った高度な検索
str.contains
メソッドは、正規表現もサポートしています。
これにより、より複雑なパターンを検索することができます。
例えば、’city’列に’New’または’Los’が含まれている行を検索する場合
# 正規表現を使って'city'列に'New'または'Los'が含まれている行をフィルタリング
filtered_df = df[df['city'].str.contains('New|Los', case=False, regex=True)]
print(filtered_df)
部分一致を用いた更新や削除
部分一致を使用して、データフレームの値を更新したり、行を削除することもできます。
値の更新
例えば、’city’列に’New’が含まれる行の’city’列の値を’New City’に更新する場合
df.loc[df['city'].str.contains('New'), 'city'] = 'New City'
print(df)
行の削除
部分一致する行を削除するには、~
演算子を使用して部分一致しない行を抽出します。
# 'city'列に'New'が含まれない行を抽出して削除
df = df[~df['city'].str.contains('New')]
print(df)
応用: 複数列での部分一致
複数の列で部分一致を行いたい場合は、条件を組み合わせることができます。
例えば、’name’列に’Alice’、’city’列に’New’が含まれている行を検索する場合
filtered_df = df[df['name'].str.contains('Alice') & df['city'].str.contains('New')]
print(filtered_df)
まとめ
Pandasで部分一致を利用することで、データのフィルタリング、検索、更新、削除が効率的に行えます。
str.contains
メソッドは特に強力で、正規表現をサポートしているため、非常に柔軟な検索が可能です。
また、大文字・小文字の区別を無視するオプションも提供されています。
これらの機能を活用することで、データの操作をより効果的に行うことができます。
以上、Pandasの部分一致についてでした。
最後までお読みいただき、ありがとうございました。