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

如何在Pandas中根据日期判断周末并生成0/1值的新列

问题原因
  • 字段名不匹配:你已经将星期数值赋值给了Date列,但后续筛选条件误用了不存在的Day列,无法匹配到对应字段。
  • 数据类型不匹配:dt.dayofweek返回的是整数类型(周一对应0,周日对应6),你用字符串形式的'0'、'5'做等值判断,永远返回False,自然无法完成赋值。
  • 链式赋值风险:你使用dataset3.Weekend[筛选条件] = 0这种链式索引写法,容易触发pandas的SettingWithCopyWarning,赋值操作可能不会生效在原DataFrame上。
  • 冗余操作:不需要单独先创建空的Weekend列,可直接通过条件判断生成新列。
解决方案

方案1:极简写法(推荐)

无需提前拆分字段或创建空列,一行代码即可生成目标列:

import pandas as pd
# 先将Date字段转为日期格式
dataset3['Date'] = pd.to_datetime(dataset3['Date'])
# 直接生成Weekend列:周六对应dayofweek=5、周日对应6,布尔值转int后自动对应1和0
dataset3['Weekend'] = (dataset3['Date'].dt.dayofweek >= 5).astype(int)

方案2:修正原有写法(适配你的原有逻辑)

如果你要沿用分步处理的逻辑,修改后代码如下:

dataset3['Date'] = pd.to_datetime(dataset3['Date'])
# 把星期数值存储到单独的Day列,避免覆盖原日期字段
dataset3['Day'] = dataset3.Date.dt.dayofweek 
# 用loc做安全赋值,直接和整数比较,不需要提前创建Weekend空列
dataset3.loc[dataset3.Day <= 4, 'Weekend'] = 0
dataset3.loc[dataset3.Day >= 5, 'Weekend'] = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:36:03