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

如何基于同形状2D掩码快速创建Pandas新DataFrame?

基于掩码DataFrame生成新DataFrame的简便方法

直接用 pandas 的列筛选 + 合并操作就能快速实现,步骤如下:

首先准备数据:

import pandas as pd

df_1 = pd.DataFrame(data=[[False, True],[True, False],[False, True], [False, False]])
df_2 = pd.DataFrame(data=[[1, 2],[3, 4],[5, 6], [7, 8]])

核心代码一行搞定:

result = pd.concat([df_2[col][df_1[col]].reset_index(drop=True) for col in df_1.columns], axis=1)

或者用 apply 写法更简洁:

result = df_2.apply(lambda col: col[df_1[col.name]].reset_index(drop=True), axis=0)

运行后得到的结果就是你要的:

0  1
0  3.0  2
1  NaN  6

代码逻辑说明

  • 遍历每个列,df_2[col][df_1[col]] 会精准筛选出该列中掩码为 True 的对应数值
  • reset_index(drop=True) 把筛选后的结果索引重置为从0开始,确保合并时按顺序对齐
  • pd.concat(..., axis=1) 将各列的筛选结果按列合并,空缺位置自动填充 NaN

如果需要把数值转回整数类型(因为 NaN 会让列变成浮点型),可以再加一句:

result = result.astype('Int64')

这样结果就会变成:

0  1
0    3  2
1  NaN  6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:17:02