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

如何检查pandas DataFrame每一行是否包含指定集合的所有值

确认pandas DataFrame每行包含指定值的惯用写法

推荐使用pandas向量化操作实现,比原有的apply遍历写法性能更高、可读性更好,核心逻辑是逐个检查每个目标值是否在对应行存在,再汇总判断:

通用实现代码

import pandas as pd

def check_all_rows_contain_values(df: pd.DataFrame, target_values: list) -> bool:
    # 为每个目标值生成标记列,记录每行是否包含该目标值
    value_exist_mask = pd.DataFrame({
        val: (df == val).any(axis=1) 
        for val in target_values
    })
    # 先判断单行间所有目标值都存在,再判断所有行都满足条件
    return value_exist_mask.all(axis=1).all()

测试验证

对你给出的示例可以直接调用验证:

VALUES = [1, 2]
df_no = pd.DataFrame(
    {
        "a": [1],
        "b": [1],
    }
)
df_yes = pd.DataFrame(
    {
        "a": [1],
        "b": [2],
        "c": [3],
    }
)

print(check_all_rows_contain_values(df_no, VALUES))  # 输出False
print(check_all_rows_contain_values(df_yes, VALUES)) # 输出True

方案优势

  • 全程使用pandas向量化运算,无行级遍历,数据量越大性能优势越明显
  • 逻辑分层清晰,每一步的作用容易理解,可拓展性强:如果需要筛选出符合要求的行,只要取value_exist_mask.all(axis=1)作为过滤条件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:09:02