在Pandas中执行contains字符串搜索后如何正确打印结果?
解决Pandas提取包含指定短语行的问题
嘿,作为Python和Pandas新手,你已经找对了方向——用str.contains()生成布尔掩码是正确的思路,但可能是几个小细节没注意到导致出错。我来帮你一步步修正:
首先,修正代码里的语法错误
你写的print[df2["Document_Title"].str.contains("King")]是错的!print是函数,必须用圆括号调用,改成:
print(df2["Document_Title"].str.contains("King"))
然后,解决路径转义的问题
Windows系统里的路径反斜杠\会被Python当成转义字符,读取CSV时容易报错。你可以两种方式修正:
- 用原始字符串:在路径前加
r - 把反斜杠改成双反斜杠
\\
比如:
# 原始字符串写法(推荐) df2 = pd.read_csv(r"C:\...\Desktop\publiccomments.csv") # 或者双反斜杠写法 df2 = pd.read_csv("C:\\...\\Desktop\\publiccomments.csv")
正确的筛选步骤
得到布尔掩码后,直接用它索引DataFrame就能提取符合条件的行。另外,要注意处理列中的缺失值(NaN),否则str.contains()会返回NaN,导致筛选出错,所以加上na=False参数把缺失值当成False处理:
完整示例代码
import pandas as pd # 正确读取CSV文件 df2 = pd.read_csv(r"C:\...\Desktop\publiccomments.csv") # 生成布尔掩码,处理缺失值 contains_king = df2["Document_Title"].str.contains("King", na=False) # 筛选出包含"King"的所有行 filtered_rows = df2[contains_king] # 查看结果 print(filtered_rows)
更简洁的写法
你也可以把掩码直接写在索引里,一行完成筛选:
filtered_rows = df2[df2["Document_Title"].str.contains("King", na=False)]
这样就能顺利提取所有Document_Title列包含"King"短语的行啦!
内容的提问来源于stack exchange,提问作者miffed_1991
相关产品推荐
相关产品推荐

