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

如何编写适配Pandas多层列头DataFrame的通用行筛选函数

函数实现

直接用Pandas内置的按行聚合逻辑即可实现通用筛选,代码如下:

def select(f, top_level_name):
    # 提取指定顶层列对应的所有子列数据
    target_sub_df = f[top_level_name]
    # 按行判断:只要任意子列转换为布尔后为真,该行就符合条件
    mask = target_sub_df.astype(bool).any(axis=1)
    # 返回筛选后的完整DataFrame
    return f[mask]

使用验证

你可以直接用给出的示例数据测试:

# 测试筛选顶层A的行
print(select(f, "A"))
# 输出结果和手动写的筛选逻辑完全一致:
   A     B   
   u  v  x  y
0  1  1  0  1
1  1  0  0  0
3  1  0  1  0

# 测试筛选顶层B的行
print(select(f, "B"))
# 输出结果同样匹配手动实现:
   A     B   
   u  v  x  y
0  1  1  0  1
2  0  0  1  1
3  1  0  1  0

逻辑说明

  • 不管指定顶层列下有多少个子列、子列名称是什么,f[top_level_name]都可以一次性提取所有对应子列组成子DataFrame,无需硬编码子列名
  • any(axis=1)会自动对每一行的所有子列做逻辑或运算,替代手动拼接多个|条件,适配任意子列数量
  • astype(bool)和原实现的逻辑保持一致,兼容非0/1的数值类型判断

内容的提问来源于stack exchange,提问作者W.P. McNeill

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:36:01