You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas在大型CSV文件中查找特定关键词并获取相关行/列信息?

用Pandas找CSV里任意位置的关键词,还能拿完整行信息

先看示例数据:

first     last                   email
0  Corey  Schafer  CoreMSchafer@gmail.com
1   Jane      Doe       JaneDoe@gmail.com
2   John      Doe       JohnDoe@gmail.com

第一步:把CSV读进Pandas

不管文件多大,先加载成DataFrame:

import pandas as pd
df = pd.read_csv("你的大型CSV文件路径.csv")

第二步:全表搜关键词,不用管在哪列

不确定关键词在第几行第几列?直接遍历所有单元格查找,一行代码就能筛出包含目标关键词(比如"John")的所有行:

keyword = "John"
# 生成每行的匹配标记:只要该行有任意单元格含关键词就标True
match_rows = df.applymap(lambda cell: keyword in str(cell)).any(axis=1)
# 提取所有匹配的行
matched_data = df[match_rows]

解释下:applymap会挨个检查每个单元格,转成字符串是为了避免数值类型报错;any(axis=1)意思是只要这行里有一个单元格符合条件,就算匹配成功。

第三步:查看完整结果

直接打印matched_data,所有包含关键词的行都会完整显示,包括该行所有列的信息。比如示例里会输出:

first last           email
2   John  Doe  JohnDoe@gmail.com

要是有多个匹配条目,所有符合的行都会被一次性捞出来,不会遗漏。

可选:精准匹配vs模糊匹配

上面是模糊匹配(单元格里包含关键词就算),如果要找内容完全等于关键词的单元格,把lambda表达式改了就行:

match_rows = df.applymap(lambda cell: str(cell) == keyword).any(axis=1)

大文件优化技巧

要是CSV文件特别大,一次性加载卡顿的话,试试分块读取:

chunk_size = 10000  # 每次读1万行
all_matches = []
for chunk in pd.read_csv("你的大型CSV文件路径.csv", chunksize=chunk_size):
    chunk_matches = chunk.applymap(lambda cell: keyword in str(cell)).any(axis=1)
    all_matches.append(chunk[chunk_matches])
# 把所有块的结果合并
final_matches = pd.concat(all_matches)

内容的提问来源于stack exchange,提问作者Fantom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 23:10:25