📅  最后修改于: 2023-12-03 15:03:29.220000             🧑  作者: Mango
如果你正在使用 Pandas 进行数据处理,并且需要使用 Regex (正则表达式)来进行列过滤,你可能会遇到需要从列中过滤掉特定字符串的情况。这可以通过使用 Pandas 的 Series.str.contains()
方法来实现。但是,如果我们需要从列中过滤掉一些特定的字符串,该怎么办呢?
在本教程中,我们将介绍如何使用 Pandas 中的 Series.str.contains()
方法过滤出不包含指定字符串的列数据。
在开始本教程之前,请先确保你已经安装好了 Pandas,可以通过下面的命令来检查你的环境是否已经准备就绪:
import pandas as pd
print(pd.__version__)
如果你的环境中已经安装了 Pandas,你应该会看到类似下面的输出:
1.2.3
假设我们有一个数据集,包含了不同城市的人口信息。我们可以通过以下代码来创建一个示例数据集:
import pandas as pd
data = {
'city': ['Shanghai', 'Beijing', 'Guangzhou', 'Shenzhen', 'Hangzhou'],
'population': [24180000, 21710000, 14050000, 13020000, 9884000]
}
df = pd.DataFrame(data)
这将创建一个包含了 'city' 和 'population' 两列数据的 DataFrame。我们可以使用 Pandas 的 Series.str.contains()
方法来过滤出包含指定字符串的数据,例如:
filtered_df = df[df['city'].str.contains('hen')]
print(filtered_df)
通过上述代码,我们可以过滤出 city 列中包含 'hen' 的行数据,输出结果如下:
city population
1 Beijing 21710000
3 Shenzhen 13020000
但是,如果我们需要过滤出不包含指定字符串的数据,该怎么实现呢?我们可以通过在正则表达式中使用 ^
符号来实现,例如:
filtered_df = df[~df['city'].str.contains('^.*hen.*$', regex=True)]
print(filtered_df)
通过在正则表达式中使用 ^
符号表示字符串的开头,$
符号表示字符串的结尾,.*
表示任意字符。我们可以在 ^
和 $
之间使用 .*
来表示不包含指定字符串的条件。通过在 []
中使用 ~
符号,我们可以实现不包含指定字符串的条件筛选。最终,我们可以得到如下输出结果:
city population
0 Shanghai 24180000
2 Guangzhou 14050000
4 Hangzhou 9884000
在本教程中,我们介绍了如何在 Pandas 中使用 Series.str.contains()
方法过滤出不包含指定字符串的列数据。通过在正则表达式中使用 ^
和 $
符号以及 .*
来实现条件筛选。通过本教程的学习,相信读者已经可以熟练地使用 Pandas 进行数据处理了。