TypechoJoeTheme

至尊技术网

登录
用户名
密码

PandasDataFrame高效向量化操作:根据列条件提取关联数据列表

2025-12-01
/
0 评论
/
35 阅读
/
正在检测是否收录...
12/01

首先,构建一个模拟数据集:

python
import pandas as pd

data = {
'标题': ['人工智能引领未来科技', '气候变化下的农业挑战', '深度学习在医疗影像中的应用'],
'关键词': [['AI', '科技', '创新'], ['气候', '农业', '可持续'], ['AI', '医疗', '深度学习']],
'描述': ['探讨AI如何改变人类社会', '分析极端天气对粮食生产的影响', '介绍神经网络在疾病诊断中的突破'],
'正文': [
'近年来,人工智能技术迅猛发展……',
'全球气温上升导致农作物减产……',
'卷积神经网络在肺部CT识别中表现优异……'
]
}

df = pd.DataFrame(data)

现在,我们希望找出所有关键词中包含“AI”的新闻,并提取它们的标题、描述和正文。关键在于如何高效判断某一列(关键词)是否包含某个元素。由于“关键词”列存储的是列表,直接使用==in无法进行向量化比较。此时,可以利用apply结合in操作,但更高效的方式是使用str方法配合explode展开列表后进行匹配。

不过,对于此类嵌套列表的条件筛选,一个更直观且高效的策略是使用apply函数配合lambda表达式进行向量化判断:

python target_keyword = 'AI' mask = df['关键词'].apply(lambda x: target_keyword in x) filtered_data = df[mask]

这一步生成了一个布尔掩码mask,它对每一行判断“AI”是否存在于“关键词”列表中。由于apply作用于整个Series,这一操作是向量化的,避免了显式循环,执行速度远超传统遍历。

接下来,提取符合条件的记录中的多个字段内容。我们可以将结果组织成字典列表,便于后续处理:

python result_list = filtered_data[['标题', '描述', '正文']].to_dict('records')

to_dict('records')会将每行转换为一个字典,键为列名,值为对应字段内容,最终形成一个结构清晰的列表。例如,上述代码将返回:

python [ { '标题': '人工智能引领未来科技', '描述': '探讨AI如何改变人类社会', '正文': '近年来,人工智能技术迅猛发展……' }, { '标题': '深度学习在医疗影像中的应用', '描述': '介绍神经网络在疾病诊断中的突破', '正文': '卷积神经网络在肺部CT识别中表现优异……' } ]

这种结构非常适合用于生成报告、构建推荐系统或输入到自然语言处理模型中。

值得一提的是,若数据量极大,还可进一步优化性能。例如,提前将关键词列表转换为集合(set),提升成员检查效率:

python df['关键词_set'] = df['关键词'].apply(set) mask = df['关键词_set'].apply(lambda x: 'AI' in x)

集合的查找时间复杂度为O(1),比列表的O(n)更优,尤其在关键词数量较多时优势明显。

此外,若需支持多个关键词的“或”条件匹配,可扩展逻辑如下:

python target_keywords = {'AI', '深度学习'} mask = df['关键词'].apply(lambda x: bool(set(x) & target_keywords))

通过集合交集运算,快速判断是否存在任一目标关键词。

整个流程体现了Pandas向量化操作的核心思想:以数组为中心,避免逐元素循环,充分利用底层C实现的高效运算。这不仅提升了代码的可读性,也显著增强了执行效率。在实际项目中,这种模式广泛应用于日志分析、用户行为挖掘、内容推荐等多个场景。

掌握这类技巧,意味着我们能以更少的代码、更高的性能完成复杂的数据筛选与聚合任务,真正发挥出Pandas在数据处理中的强大潜力。

朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/40008/(转载时请注明本文出处及文章链接)

评论 (0)