如何将pandas DataFrame中含指定文本的行提取到新DataFrame
需求实现正确方案
你要实现从test3.csv的e列筛选包含[XXX]的行并生成新DataFrame,可直接使用以下代码:
import pandas as pd # 读取源文件 df = pd.read_csv('test3.csv') # 构建筛选条件:e列包含[XXX],空值默认不匹配 # 方式1:关闭正则匹配,直接按普通字符串匹配 mask = df['e'].str.contains('[XXX]', regex=False, na=False) # 方式2:保留正则匹配,转义中括号特殊字符 # mask = df['e'].str.contains(r'\[XXX\]', na=False) # 筛选符合条件的行生成新DataFrame new_df = df[mask].copy() # 输出验证 print(new_df)
关键逻辑说明
- pandas的
str.contains()是专门用于Series字符串包含判断的方法,比自行遍历、调用np.where的写法更简洁高效 - 因为
[和]是正则表达式的特殊字符,要么设置regex=False把目标内容当作普通字符串匹配,要么用反斜杠转义特殊字符,否则会匹配不到你要的[XXX]文本 - 加
na=False是为了处理e列中的空值,避免空值返回NaN导致筛选报错
原有代码问题
你之前的写法逻辑完全不成立:np.where('[XXX]')仅传入了一个字符串,没有传入任何判断条件,也没有指定要判断的是e列的内容,不可能得到正确结果。
内容的提问来源于stack exchange,提问作者Loknath Basak
相关产品推荐
相关产品推荐

