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

基于Pandas实现DataFrame索引匹配生成mask列的需求与示例

解决方法:给DataFrame添加基于索引存在性的mask列

嘿,这个需求用Pandas的内置方法就能轻松实现,代码简洁还高效。我直接给你上可运行的方案,再拆解下逻辑:

完整实现代码

import pandas as pd

# 初始化你提供的示例数据
data1 = {'key':['a','b','c','d','e','f','g'], 'profit':[12,3,4,5,6,7,9]}
df1 = pd.DataFrame(data1)
data2= {'key':['a','b','c'], 'profit':[12,3,4]}
df2 = pd.DataFrame(data2)

# 核心逻辑:生成mask列
df1['mask'] = df1.index.isin(df2.index).astype(int)

# 输出结果,和你预期的df3完全一致
print(df1)

逻辑拆解

  • 第一步:判断索引存在性:df1.index.isin(df2.index)会返回一个布尔类型的Series,每个元素对应df1的索引是否存在于df2的索引中——存在就返回True,不存在返回False。
  • 第二步:转成整数格式:.astype(int)把布尔值转换成整数,True会变成1,False变成0,刚好符合你需要的mask列规则。

额外补充:如果是基于key列而非索引的情况

看你的示例数据,key列的内容和索引的匹配结果一致,如果你实际需求是判断key值是否存在于df2的key列中,只需要把代码改成:

df1['mask'] = df1['key'].isin(df2['key']).astype(int)

同样能得到你想要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:26:47