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

如何在带多维度索引的pandas DataFrame中为np.where赋值添加日期过滤

问题解决:给带多级索引的DataFrame按日期过滤并使用np.where更新

因为你的DataFrame是employee_id和date的多级索引,首先需要通过df.index.get_level_values('date')提取索引中的日期列,再结合需求把日期条件加入np.where逻辑中,分两种常见场景处理:


场景1:仅更新2020-01-01之前的行,其余行保留原Sale值

如果只需要对2020-01-01之前的记录执行“取sale_actual和sale_expect较大值”的操作,其他行保持原有Sale数据不变,可以嵌套np.where实现:

# 提取多级索引中的date列
date_index = df.index.get_level_values('date')
# 外层判断日期条件,满足则执行数值逻辑,否则保留原Sale值
df['Sale'] = np.where(
    date_index < '2020-01-01',
    np.where(df.sale_actual > df.sale_expect, df.sale_actual, df.sale_expect),
    df['Sale']
)

场景2:仅当日期符合条件且数值满足时才更新

如果需要同时满足“日期在2020-01-01之前”和“sale_actual > sale_expect”两个条件时,才赋值sale_actual,否则统一赋值sale_expect,可以用逻辑与&组合条件:

date_index = df.index.get_level_values('date')
# 复合条件判断
df['Sale'] = np.where(
    (date_index < '2020-01-01') & (df.sale_actual > df.sale_expect),
    df.sale_actual,
    df.sale_expect
)

注意:如果你的date索引不是datetime类型,需要先转成datetime格式,比如pd.to_datetime(df.index.get_level_values('date')),避免日期比较出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:25:16