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

Pandas:如何基于DatetimeIndex创建is_weekend条件列?

解决Pandas DataFrame添加周末判断列的问题

嘿,我来帮你搞定这个需求!首先得澄清一个容易混淆的点:你说的“行索引的day字段”应该是指星期几(也就是dayofweek属性),而不是日期中的“几号”(day属性)——毕竟周末是按星期算的,不是每月的5/6号对吧?

正确的实现方法

方法1:用你尝试过的np.where

如果坚持用np.where,可以这样写:

import numpy as np
import pandas as pd

# 给df添加is_weekend列
df['is_weekend'] = np.where(df.index.dayofweek.isin([5, 6]), True, False)

这里df.index.dayofweek会返回每个索引对应的星期数字(0=周一,1=周二…5=周六,6=周日),isin([5,6])用来判断是否是周六或周日,np.where则把符合条件的行标记为True,其余为False。

方法2:更简洁的布尔值直接赋值

其实Pandas的布尔Series可以直接赋值给新列,不用绕np.where:

df['is_weekend'] = df.index.dayofweek.isin([5, 6])

这样写出来的效果和上面完全一样,代码更清爽。

你可能踩的坑

你之前出错大概率是这两个原因之一:

  • 混淆了day和dayofweek:如果用了df.index.day,那判断的是日期中的“5号”或“6号”,和周末完全不沾边;
  • 错误用了逻辑运算符:比如直接写df.index.dayofweek ==5 or df.index.dayofweek ==6,Pandas里不能用or,要用|(且要加括号),或者更推荐用isin()来避免这种问题。

如果真的是想判断日期的“5号”或“6号”,那代码是这样的:

df['is_5_or_6'] = df.index.day.isin([5, 6])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:53:31