如何筛选Pandas DataFrame中B列所有元素≥0.5的行?
Pandas筛选列表列中所有元素满足条件的行
先给出原始DataFrame的构造代码:
import pandas as pd df = pd.DataFrame({ 'A': [1, 2], 'B': [[0.2, 0.8], [0.6, 0.9]] })
需求是筛选出B列中所有元素均≥0.5的行,这里有两种实用方法,可根据数据规模选择:
方法一:简洁直观的apply+all(适合小规模数据)
直接对B列的每个列表做全量检查,代码简洁易懂:
new_df = df[df['B'].apply(lambda x: all(num >= 0.5 for num in x))]
执行后得到的new_df就是目标结果:
A B 1 2 [0.6, 0.9]
方法二:numpy向量化操作(适合大规模数据)
如果数据集很大,Python层面的循环会拖慢速度,用numpy的向量化操作能大幅提升效率:
import numpy as np # 将B列的列表转为二维numpy数组 arr = np.array(df['B'].tolist()) # 生成布尔掩码:判断每行所有元素是否≥0.5 mask = (arr >= 0.5).all(axis=1) # 筛选符合条件的行 new_df = df[mask]
两种方法都能得到预期结果,小规模数据选方法一足够,大数据集优先考虑方法二。
内容的提问来源于stack exchange,提问作者Cranjis
相关产品推荐
相关产品推荐

