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

Pandas如何基于两个DataFrame的对应条件生成0/1哑变量

实现代码

你可以直接用pandas的向量化布尔运算完成需求,核心实现逻辑如下:

import pandas as pd

# 你提供的示例初始化代码
df = pd.DataFrame({
    'a':(0,0,0,0,14,15,16,17),
    'b':(20,21,22,23,24,25,26,27),
    'c':(30,31,32,0,34,35,36,37),
    'd':(40,41,42,43,44,0,0,47),
})
dfLag = df.shift(1)

# 核心逻辑:判断两个DataFrame对应位置元素均大于0,结果转整数
dummies = (df.gt(0) & dfLag.gt(0)).astype(int)

逻辑说明

  • df.gt(0) 会生成和df维度、列名完全一致的布尔DataFrame,元素为True代表原df对应位置值大于0,否则为False
  • dfLag.gt(0) 同理生成dfLag的大于0判断布尔矩阵
  • 用&做逐元素的逻辑与运算,只有两个矩阵对应位置都为True时结果才为True
  • 最后用.astype(int)把布尔值转为整数:True转1、False转0,刚好符合你要的0/1哑变量要求

输出验证

运行后得到的dummies结果如下,和期望输出效果一致:

索引abcd
00000
10111
20111
30101
40101
51110
61110
71110

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:36:08