Pandas str.contains 函数的 NaN 处理问题

Pandas str.contains 函数的 NaN 处理问题

在本文中,我们将介绍 Pandas 中 str.contains 函数的 NaN 处理问题。PandasPython 中一款经常被使用的数据分析工具,而 str.contains 函数可以方便地对字符串进行模糊匹配,但是这里面存在着一些 NaN 处理问题。

阅读更多:Pandas 教程

问题的出现

在 Pandas 中,str.contains 函数用于检查一个字符串是否包含某一子串,其函数格式如下:

Series.str.contains(pat, case=True, flags=0, na=nan, regex=True)
Python

其中,na 参数用于处理缺失值,默认情况下为 nan,即忽略缺失值。但是,这里有一个问题:当字符串中含有缺失值时,该函数无法正常起作用。下面的代码演示了这个问题:

import pandas as pd

data = pd.Series(['Apple', pd.NA, 'Banana'])

print(data.str.contains('A'))  # output: 0     True
                                #         1    <NA>
                                #         2    False
Python

可以看到,当 Series 中存在缺失值时,函数会返回一个布尔类型的 Series,但是在第二个位置处的值返回了 NA,而不是 True 或 False。

解决方法

为了解决上述问题,我们需要用到 Pandas 的 fillna 函数,该函数可以将缺失值用指定值来填充。对于本问题而言,我们需要将缺失值填充为一个不存在于字符串中的字符,例如空格或者字符串 “NaN”。

import pandas as pd

data = pd.Series(['Apple', pd.NA, 'Banana'])

data.fillna('NaN', inplace=True)

print(data.str.contains('A'))  # output: 0     True
                                #         1    False
                                #         2    False
Python

在对 Series 进行 fillna 操作之后,缺失值被填充为了字符串 “NaN”,接着我们再应用 str.contains 函数,便可以得到期望的结果。此时,无论 Series 中是否存在缺失值,函数都能够正常工作。

总结

本文介绍了 Pandas 中 str.contains 函数的缺陷及解决方法。针对这个问题,我们可以使用 fillna 函数将缺失值填充为不存在于字符串中的字符,这样就可以轻松地处理 NaN 了!

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册