Pandas:如何选择不以字符串开头的行
您可以使用以下基本语法来选择 pandas DataFrame 中不以特定字符串开头的行:
df[~df. my_column . str . startswith ((' this ', ' that '))]
此特定公式选择 DataFrame 中名为my_column的列不以字符串this或字符串that开头的所有行。
以下示例展示了如何在实践中使用此语法。
示例:选择 Pandas 中不以字符串开头的行
假设我们有以下 pandas DataFrame,其中包含各个商店的销售信息:
import pandas as pd #createDataFrame df = pd. DataFrame ({' store ': ['Upper East', 'Upper West', 'Lower East', 'West', 'CTR'], ' sales ': [150, 224, 250, 198, 177]}) #view DataFrame print (df) blind sales 0 Upper East 150 1 Upper West 224 2 Lower East 250 3 West 198 4 CTR 177
我们可以使用以下语法来选择 DataFrame 中存储列中不以“Upper”或“Lower”字符串开头的所有行:
#select all rows where store does not start with 'Upper' or 'Lower'
df[~df. blind . str . startswith ((' Upper ',' Lower '))]
blind sales
3 West 198
4 CTR 177
请注意,返回的唯一行是存储列不以“Upper”或“Lower”开头的行。
如果需要,您还可以在startupswith()函数之外定义字符串元组:
#define tuple of strings
some_strings = (' Upper ', ' Lower ')
#select all rows where store does not start with strings in tuple
df[~df. blind . str . startswith (some_strings)]
blind sales
3 West 198
4 CTR 177
这会产生与先前方法相同的结果。
注意:您可以在此处找到 pandas 中startwith函数的完整文档。
其他资源
以下教程解释了如何在 pandas 中执行其他常见任务:
Pandas:如何根据字符串长度过滤行
Pandas:如何检查列是否包含字符串
Pandas:如何使用 GroupBy 连接字符串