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

pandas基于if条件新增列:满足条件赋值1(True)否则赋值0(False)

pandas按条件新增1/0标识列的实现方法

错误原因

你原有写法存在两个问题:

  • 不能直接对pandas的Series(整列数据)使用if df['weekday'] <5这类判断,pandas无法返回单个布尔值,会抛出歧义错误
  • if和else分支的赋值逻辑完全一致,无论条件是否成立都执行相同操作,不可能得到预期结果

正确实现方式

以下三种是常用的可行方案,优先推荐前两种向量化操作,执行效率更高:

方案1:布尔值直接转整型(最简洁)

pandas中布尔值True默认对应1,False对应0,直接对判断结果做类型转换即可:

# 规则:weekday >=5 为周末(对应1),否则为0
df['weekend'] = (df['weekday'] >=5).astype(int)

方案2:使用np.where(适合多条件场景)

import numpy as np
df['weekend'] = np.where(df['weekday'] >=5, 1, 0)

方案3:使用apply(适合复杂自定义规则)

df['weekend'] = df['weekday'].apply(lambda x: 1 if x >=5 else 0)

最终输出结果

执行后得到的DataFrame如下:

yeartimeweekdayweekend
20181240
2018861
20171051
20191010

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:18:02