如何结合Pandas DateTime索引的日期与时间条件为列赋值
合并时间与星期条件的pandas赋值方案
可用实现代码
以下两种写法都可以一行实现需求:
- 性能更优的索引筛选写法(适合大体积DataFrame)
date_range.loc[(date_range.index.dayofweek == 6) & date_range.index.indexer_between_time('15:00', '18:59').astype(bool), 'Happy Hour'] = 'Yes!!'
- 可读性更高的apply写法(逻辑直观容易调整)
date_range['Happy Hour'] = date_range.apply(lambda x: 'Yes!!' if (x.name.dayofweek == 6 and 15 <= x.name.hour < 19) else '', axis=1)
补充说明
你之前单独筛选周日的代码存在逻辑问题:((pd.DatetimeIndex(date_range.index).dayofweek) // 6 == 'Yes!!')是将数字运算结果和字符串做等值判断,返回结果全为False,无法正确筛选周日,直接用date_range.index.dayofweek == 6即可正确匹配周日。
内容的提问来源于stack exchange,提问作者Zoner
相关产品推荐
相关产品推荐

