pandas如何删除未至少包含特定值yes/on的DataFrame行且不使用for循环
实现代码
你可以直接用pandas内置的向量化操作完成,全程无显式循环,性能远高于迭代写法:
filtered_df = df[df.isin(['yes', 'on']).any(axis=1)]
代码说明
df.isin(['yes', 'on']):返回和原DataFrame维度相同的布尔矩阵,元素为True表示对应位置的值是yes或者on,其余情况(包括NaN、no)都为False.any(axis=1):对布尔矩阵按行聚合,只要某行存在至少一个True就返回True,否则返回False,最终得到长度等于行数的布尔掩码- 用布尔掩码对原DataFrame做行索引,就只保留了符合要求的行,结果和你给出的预期输出完全一致。
内容的提问来源于stack exchange,提问作者LJG
相关产品推荐
相关产品推荐

