📜  pandas 列 rgeex 不包含 - Python (1)

📅  最后修改于: 2023-12-03 15:03:29.220000             🧑  作者: Mango

Pandas 列 Regex 不包含 - Python

如果你正在使用 Pandas 进行数据处理,并且需要使用 Regex (正则表达式)来进行列过滤,你可能会遇到需要从列中过滤掉特定字符串的情况。这可以通过使用 Pandas 的 Series.str.contains() 方法来实现。但是,如果我们需要从列中过滤掉一些特定的字符串,该怎么办呢?

在本教程中,我们将介绍如何使用 Pandas 中的 Series.str.contains() 方法过滤出不包含指定字符串的列数据。

环境准备

在开始本教程之前,请先确保你已经安装好了 Pandas,可以通过下面的命令来检查你的环境是否已经准备就绪:

import pandas as pd

print(pd.__version__)

如果你的环境中已经安装了 Pandas,你应该会看到类似下面的输出:

1.2.3
使用 Pandas 过滤出不包含指定字符串的列数据

假设我们有一个数据集,包含了不同城市的人口信息。我们可以通过以下代码来创建一个示例数据集:

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 进行数据处理了。