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

如何利用NumPy布尔数组筛选两个DataFrame的共同列名?

获取两个DataFrame的共同列名(使用NumPy布尔数组筛选Index)

这问题我熟!你已经通过(df2.columns).isin(df1.columns)得到了判断列是否重叠的布尔数组,接下来只需要用这个数组直接索引你的Index对象,再转成列表就搞定了:

import pandas as pd
import numpy as np

a = [{'A': 3, 'B': 5, 'C': 3, 'D': 2},{'A': 2, 'B': 4, 'C': 3, 'D': 9}]
df1 = pd.DataFrame(a)
b = [{'F': 0, 'M': 4, 'B': 2, 'C': 8 },{'F': 2, 'M': 4, 'B': 3, 'C': 9}]
df2 = pd.DataFrame(b)

# 生成布尔数组
bool_mask = df2.columns.isin(df1.columns)
# 用布尔数组筛选Index,转成列表
common_columns = df2.columns[bool_mask].tolist()

print(common_columns)  # 输出: ['B', 'C']

为什么这样可行?

Pandas的Index对象支持布尔索引,和你平时筛选Series/DataFrame的逻辑完全一致——布尔数组中True对应的位置会被保留,False的位置会被过滤掉。最后调用.tolist()就能把筛选后的Index转换成普通的Python列表。

额外技巧:更简洁的替代方法

如果你不需要手动处理布尔数组,其实还有更直接的方式获取共同列名:

  • 用集合交集:
    common_columns = list(set(df1.columns) & set(df2.columns))
    
  • 用Pandas原生的intersection方法(推荐,因为会保留列的原始顺序):
    common_columns = df1.columns.intersection(df2.columns).tolist()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:38:56