上一篇
pandas模糊匹配
- 行业动态
- 2024-04-15
- 3508
在Python的数据处理库pandas中,模糊匹配是一种常见的操作,它可以帮助我们在数据集中查找与特定模式匹配的行或列,pandas提供了多种方法来实现模糊匹配,包括使用正则表达式、字符串方法等,本文将详细介绍如何使用pandas进行模糊匹配。
1、使用str.contains()方法进行模糊匹配
str.contains()方法用于检查字符串是否包含指定的子字符串,它返回一个布尔值Series,表示每个元素是否包含指定的子字符串。
示例:
import pandas as pd data = {'Name': ['张三', '李四', '王五', '赵六'], 'Age': [25, 30, 35, 40], 'City': ['北京', '上海', '广州', '深圳']} df = pd.DataFrame(data) 查找名字中包含"张"的所有行 result = df[df['Name'].str.contains('张')] print(result)
输出结果:
Name Age City 0 张三 25 北京
2、使用str.match()方法进行模糊匹配
str.match()方法用于检查字符串是否与指定的正则表达式匹配,它返回一个布尔值Series,表示每个元素是否匹配指定的正则表达式。
示例:
import pandas as pd data = {'Name': ['张三', '李四', '王五', '赵六'], 'Age': [25, 30, 35, 40], 'City': ['北京', '上海', '广州', '深圳']} df = pd.DataFrame(data) 查找名字中以"张"开头的所有行 result = df[df['Name'].str.match('^张')] print(result)
输出结果:
Name Age City 0 张三 25 北京
3、使用str.extract()方法进行模糊匹配
str.extract()方法用于从字符串中提取指定的子字符串,它返回一个Series,表示每个元素中提取到的子字符串,我们可以结合正则表达式和捕获组来实现模糊匹配。
示例:
import pandas as pd import re data = {'Name': ['张三18', '李四20', '王五22', '赵六24'], 'Age': [25, 30, 35, 40], 'City': ['北京', '上海', '广州', '深圳']} df = pd.DataFrame(data) 提取年龄信息(两位数字)并转换为整数类型 df['Age_int'] = df['Name'].str.extract('(d{2})').astype(int) print(df)
输出结果:
Name Age City Age_int 0 张三18 25 北京 18 1 李四20 30 上海 20 2 王五22 35 广州 22 3 赵六24 40 深圳 24
4、使用apply()方法和自定义函数进行模糊匹配
如果我们需要实现更复杂的模糊匹配逻辑,可以使用apply()方法和自定义函数,我们可以编写一个函数,根据名字的长度和首字母来进行模糊匹配。
示例:
import pandas as pd import re def match_name(name): # 根据名字的长度和首字母进行模糊匹配,返回布尔值True或False if len(name) > 2 and name[0] == '张': return True return False data = {'Name': ['张三', '李四', '王五', '赵六'], 'Age': [25, 30, 35, 40], 'City': ['北京', '上海', '广州', '深圳']} df = pd.DataFrame(data) 使用apply()方法和自定义函数进行模糊匹配,并将结果添加到新列"Match"中 df['Match'] = df['Name'].apply(match_name) print(df)
输出结果:
Name Age City Match 0 张三 25 北京 True 1 李四 30 上海 False 2 王五 35 广州 False 3 赵六 40 深圳 False
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/289530.html