如何使用pandas筛选CSV文件指定列中包含指定子串的所有行
解决方案
你可以使用pandas字符串列内置的str.contains()方法实现子串模糊匹配,该方法会逐行检测列值是否包含目标子串,返回布尔值序列用于筛选符合要求的行。
1. 基础匹配(区分大小写)
默认规则下区分大小写,仅匹配包含大写Fog的内容,同时新增na=False参数处理列中空值,避免空值返回NaN导致筛选逻辑报错:
import pandas as pd df = pd.read_csv('weather_2012.csv') neblina = df[df['Weather'].str.contains('Fog', na=False)]
2. 不区分大小写匹配
如果需要同时匹配fog、Fog、FOG等不同大小写格式的子串,可新增case=False参数:
neblina = df[df['Weather'].str.contains('fog', case=False, na=False)]
常用参数说明
- 第一个位置参数为待匹配的目标子串,默认支持正则表达式,不需要正则时可添加
regex=False提升匹配效率 case:布尔值,是否区分大小写,默认值为Truena:指定列中空值的匹配结果,建议设为False,空值会直接判定为不匹配regex:布尔值,是否将目标子串作为正则表达式解析,默认值为True
内容的提问来源于stack exchange,提问作者Pablo Capon
相关产品推荐
相关产品推荐

