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

如何在不遍历DataFrame的情况下提取含指定元素的行?

提取DataFrame中列表列包含指定元素的行

问题场景

你的DataFrame结构如下:

a        b
1     frog   [1, 2, 3]
2      dog   [4, 5]
3    melon   [6, 7, 1]

需要提取b列中包含指定数字(如1)的行,且避免手动遍历整个DataFrame。

解决方案

方法1:用Series.apply()快速筛选

直接对b列使用apply结合lambda表达式,生成布尔筛选序列:

target_num = 1
filtered_df = df[df['b'].apply(lambda x: target_num in x)]

执行后得到预期结果:

a      b
1    frog   [1, 2, 3]
3   melon   [6, 7, 1]

方法2:矢量化判断(numpy辅助)

用numpy.vectorize包装判断逻辑,实现矢量化操作:

import numpy as np

def check_in_list(_list, _tag):
    return _tag in _list

vec_check = np.vectorize(check_in_list)
target_num = 1
filtered_df = df[vec_check(df['b'], target_num)]

方法3:预转集合优化多次查询

如果需要多次查询不同数字,先将b列的列表转为集合,提升判断效率:

df['b_set'] = df['b'].apply(set)
target_num = 1
filtered_df = df[df['b_set'].apply(lambda x: target_num in x)].drop('b_set', axis=1)

以上方法均无需手动遍历DataFrame,pandas会内部优化执行流程,比手动循环效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 01:09:27