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

Python中提取含指定Name值数据行的更优方法 适用于上万行数据集

解决方案

分两种常见场景处理,你可以根据自己的匹配需求选择:

场景1:需要Name完全匹配指定值(推荐优先使用,效率更高)

你不需要手动拼接所有Name值,只要把要匹配的名单存为Python列表,或者直接从独立的名单文件读取即可,示例代码如下:

import pandas as pd

# 读取原始数据集
df = pd.read_csv('Sample.csv')

# 方法A:直接在代码里定义要匹配的Name列表
# target_names = ["name_1", "name_3", "name_4", ...] # 填入所有需要匹配的Name即可

# 方法B:从独立的TXT文件读取名单(适合名单量大、需要频繁修改的场景,TXT每行存1个Name)
with open("target_names.txt", "r", encoding="utf-8") as f:
    target_names = [line.strip() for line in f if line.strip()]

# 筛选完全匹配Name的行
df_filtered = df[df["Name"].isin(target_names)]

# 导出结果,index=False可以避免导出多余的索引列
df_filtered.to_csv("Name_list.csv", index=False)

场景2:需要模糊匹配(和你之前用str.contains的逻辑一致,只要Name包含指定子串就算匹配)

可以用join方法自动生成正则匹配规则,不需要手动拼接|分隔的字符串,还可以自动处理特殊字符的转义问题,示例代码如下:

import pandas as pd
import re

# 读取原始数据集
df = pd.read_csv('Sample.csv')

# 读取目标Name列表,同样支持从文件读取
target_names = ["name_1", "name_3", "name_4", ...]

# 自动生成正则匹配规则,re.escape会自动转义Name里的正则特殊字符(比如.、*、?等),避免匹配出错
pattern = '|'.join(re.escape(name) for name in target_names)

# 筛选包含指定子串的行,na=False会跳过Name列为空的行避免报错
df_filtered = df[df["Name"].str.contains(pattern, na=False)]

# 导出结果
df_filtered.to_csv("Name_list.csv", index=False)

注意事项

  • 上万行数据的场景下,完全匹配用isin方法的执行效率远高于正则模糊匹配,如果你的需求是完全相等优先用第一种方案
  • 匹配名单单独存在独立文件里的话,后续调整匹配名单不需要修改业务代码,维护成本更低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:54:02