当前位置: 首页 > 科技观察

通过五个示例学习Pandas中的字符串过滤_0

时间:2023-03-19 21:54:56 科技观察

Pandas库具有许多函数和方法,可以轻松简单地处理文本数据。在本文中,我将学习5种可用于过滤文本数据(即字符串)的不同方法:是否包含字符序列查找字符串的长度确定它是否以特定字符序列开始或结束确定是否一个字符是数字或字母数字查找特定字符序列的出现首先我们将库和数据导入pandas作为pddf=pd.read_csv("example.csv")df我们的示例DataFrame包含6行和4列。我们将使用不同的方法来处理DataFrame中的行。第一个过滤操作检查字符串是否包含特定单词或字符序列,使用contains方法查找描述字段包含“二手车”的行。但是要获取pandas中的字符串,需要通过pandas的str访问器,代码如下:df[df["description"].str.contains("usedcar")]但是为了找到所有的usedcars在这个DataFrame中,我们需要分别查找“used”和“car”这两个词,因为这两个词可能一起出现,但它们并没有连接起来:df[df["description"].str.contains("used")&df["description"].str.contains("car")]可以看到最后一行包含“car”和“used”,但不是一起。下一个方法是根据字符串的长度进行过滤。假设我们只对超过15个字符的描述感兴趣。可以使用内置的len函数来实现,如下:df[df["description"].apply(lambdax:len(x)>15)]这里需要写一个lambda表达式,它被传递在expression公式中,使用len函数获取长度,并使用apply函数将其应用到每一行。更常见和有效的方法是通过str访问器:df[df["description"].str.len()>15]我们可以使用startswith和endswith基于字符串的第一个或最后一个字母来过滤。df[df["lot"].str.startswith("A")]方法还检查前n个字符。例如,我们可以选择以“A-0”开头的行:df[df["lot"].str.startswith("A-0")]Python内置的字符串函数都可以应用于PandasDataFrames。例如,在价格栏中,有一些非数字字符,如$和k。我们可以使用isnumeric函数过滤掉。df[df["price"].apply(lambdax:x.isnumeric()==True)]同样,如果需要保留字母数字(即只保留字母和数字),可以使用isalphanum函数,该函数同上。count方法计算单个字符或字符序列的出现次数。例如,查找单词或字符出现的次数。这里统计一下description栏中“used”的出现次数:df["description"].str.count("used")#Result011021314150Name:description,dtype:int64如果要将它用于条件过滤,只需将它与这样的值进行比较:df[df["description"].str.count("used")<1]非常简单!本文介绍了基于字符串值执行PandasDataFrames的5种不同方式。虽然通常我们更关注数字数据,但文本数据同样重要,包含很多有价值的信息。能够清理和预处理文本数据对于数据分析和建模至关重要。