Pandas:如何在 query() 中使用 like


您可以使用以下方法在 pandas query()函数中使用LIKE (类似于 SQL)来查找包含特定模式的行:

方法 1:查找包含模式的行

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

方法 2:查找包含多个模式之一的行

 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()函数查找 DataFrame 中team列中包含“avs”的所有行:

 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:查找包含多个模式之一的行

以下代码显示如何使用query()函数查找 DataFrame 中team列中包含“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 中执行其他常见任务:

Pandas:如何根据字符串长度过滤行
Pandas:如何根据条件删除行
Pandas:如何使用“NO IN”过滤器

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注