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

基于条件填充DataFrame列异常:非2017年被错误标记为Yes

问题原因与修复方案

你的代码核心错误在于**week_nr的条件判断逻辑完全错误**:你用&(逻辑与)连接多个week_nr == X的条件,但一个数值不可能同时等于26、27、28等多个不同数字,这会导致整个条件表达式结果永远为False。结合你描述的异常现象,本质是判断周数是否属于目标列表的方式完全错误,才出现不符合预期的标记结果。

正确的做法是判断week_nr是否在目标周数列表中,以下是两种简洁的实现方式:

推荐方案:使用isin()方法

这种写法更简洁、可读性更高,也不容易出错:

# 定义假期周数列表
vacation_weeks = [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 42, 43, 44]
# 填充is_vacation列
dfV['is_vacation'] = np.where((dfV['year'] == 2017) & (dfV['week_nr'].isin(vacation_weeks)), 'Yes', 'No')

备选方案:使用逻辑或|

如果坚持用多个条件判断,需要把&替换为|(逻辑或),表示week_nr等于其中任意一个值即可:

dfV['is_vacation'] = np.where((dfV['year'] == 2017) & 
                             (dfV['week_nr'] == 26) | (dfV['week_nr'] == 27) | (dfV['week_nr'] == 28)
                              | (dfV['week_nr'] == 29) | (dfV['week_nr'] == 30) |
                              (dfV['week_nr'] == 31) | (dfV['week_nr'] == 32) | (dfV['week_nr'] == 33) | (dfV['week_nr'] == 34)
                              | (dfV['week_nr'] == 35) | (dfV['week_nr'] == 42) | (dfV['week_nr'] == 43) | (dfV['week_nr'] == 44), 'Yes', 'No')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:15:28