Pandas 模糊查询与替换的操作

  • Post category:Python

下面是关于“Pandas模糊查询与替换的操作”的完整攻略。

模糊查询

Pandas提供了str.contains()方法来进行模糊查询。该方法需要传入一个正则表达式作为查询条件,只要匹配成功就会返回True。

示例:

首先,我们创建一个包含姓名和城市的数据集合:

import pandas as pd

data = pd.DataFrame({
    'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Lisa'],
    'City': ['London', 'Edinburgh', 'New York', 'Sydney', 'Washington']
})

现在我们想要查询出所有居住在美国的用户。这时候,我们就可以使用str.contains()方法,传入一个正则表达式\b[A-Z][a-z]+\b,表示只返回由两个字母组成的城市名(如:New York、San Francisco)。具体代码如下:

us_data = data[data['City'].str.contains(r'\b[A-Z][a-z]+\b')]
print(us_data)

输出结果:

     Name         City
2   Steve     New York
4    Lisa  Washington

可以看到,只返回了我们需要的两条数据。

替换操作

Pandas提供了str.replace()方法来进行替换操作。该方法需要传入两个参数,第一个参数为待替换的字符串或正则表达式,第二个参数为替换成的字符串。

示例:

继续以上面数据集合为例。现在我们想要将名字中的所有元音字母替换成 ‘’。那么,我们可以使用str.replace()方法,传入一个正则表达式 [a,e,i,o,u] 作为待替换的内容,传入一个 ‘’ 作为替换成的内容。具体代码如下:

data['Name'] = data['Name'].str.replace(r'[a,e,i,o,u]', '*')
print(data)

输出结果:

     Name         City
0      T*m       London
1     J*ck    Edinburgh
2    St*v*     New York
3    R*cky       Sydney
4      L*s  Washington

可以看到,所有元音字母都被替换成了 ‘*’。