パンダ: query() で like を使用する方法


次のメソッドを使用すると、pandas query()関数でLIKE (SQL と同様) を使用して、特定のパターンを含む行を検索できます。

方法 1: パターンを含む行を検索する

 df. query (' my_column.str.contains("pattern1") ')

方法 2: 複数のパターンの 1 つを含む行を検索する

 df. query (' my_column.str.contains("pattern1|pattern2") ')

次の例は、次の pandas DataFrame で各メソッドを実際に使用する方法を示しています。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['Cavs', 'Heat', 'Mavs', 'Mavs', 'Nets',
                            'Heat', 'Cavs', 'Jazz', 'Jazz', 'Hawks'],
                   ' points ': [3, 3, 4, 5, 4, 7, 8, 7, 12, 14],
                   ' rebounds ': [15, 14, 14, 10, 8, 14, 13, 9, 5, 4]})

#view DataFrame
print (df)

    team points rebounds
0 Cavs 3 15
1 Heat 3 14
2 Mavs 4 14
3 Mavs 5 10
4 Nets 4 8
5 Heat 7 14
6 Cavs 8 13
7 Jazz 7 9
8 Jazz 12 5
9 Hawks 14 4

例 1: パターンを含む行の検索

次のコードは、 query()関数を使用して、チーム列に「avs」を含む DataFrame 内のすべての行を検索する方法を示しています。

 df. query (' team.str.contains("avs") ')

        team points rebounds
0 Cavs 3 15
2 Mavs 4 14
3 Mavs 5 10
6 Cavs 8 13

返された各行には、チーム列のどこかに「avs」が含まれています。

この構文では大文字と小文字が区別されることにも注意してください。

したがって、代わりに「AVS」を使用した場合、チーム列には大文字の「AVS」を含む行がないため、結果は返されません。

例 2: 複数のパターンの 1 つを含む行を検索する

次のコードは、 query()関数を使用して、チーム列に「avs」または「eat」を含むデータフレーム内のすべての行を検索する方法を示しています。

 df. query (' team.str.contains("avs|eat") ')

        team points rebounds
0 Cavs 3 15
1 Heat 3 14
2 Mavs 4 14
3 Mavs 5 10
5 Heat 7 14
6 Cavs 8 13

返された各行には、チーム列のどこかに「avs」または「eat」のいずれかが含まれます。

: |演算子はパンダでは「または」を意味します。さらに多くのチャネル デザインを検索するには、自由に使用してください。

追加リソース

次のチュートリアルでは、パンダで他の一般的なタスクを実行する方法を説明します。

Pandas: 文字列の長さに基づいて行をフィルタリングする方法
Pandas: 条件に基づいて行を削除する方法
パンダ: 「NO IN」フィルターの使用方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です