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 中执行其他常见任务: