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

Pandas如何基于多条件(含日期偏移)为DataFrame新增备注列

Pandas 多条件新增备注列实现方案

前置依赖

确保已安装pandas,如果需要用到更简洁的条件分支写法可额外导入numpy。

实现代码

假设你的日期列名称为date,可根据实际字段名调整:

import pandas as pd
from datetime import timedelta

# 1. 日期格式预处理:确保日期列转为标准datetime格式,去掉时分秒避免计算误差
df["date"] = pd.to_datetime(df["date"]).dt.normalize()
# 取当日基准值(同样去除时分秒)
today = pd.Timestamp.today().normalize()

# 2. 初始化备注列为空字符串
df["备注"] = ""

# 3. 生成基础条件掩码:同时满足Spend为Y、Ccy为Mgd Ccy
base_condition = (df["Spend"] == "Y") & (df["Ccy"] == "Mgd Ccy")

# 4. 按日期偏移量赋值对应备注
# 当日+1天赋值Note 1
df.loc[base_condition & (df["date"] == today + timedelta(days=1)), "备注"] = "Note 1"
# 当日+2天赋值Note 2
df.loc[base_condition & (df["date"] == today + timedelta(days=2)), "备注"] = "Note 2"

可选简化写法(使用numpy.where)

如果偏好链式写法可以用嵌套np.where实现:

import numpy as np

df["备注"] = np.where(
    base_condition & (df["date"] == today + timedelta(days=1)),
    "Note 1",
    np.where(base_condition & (df["date"] == today + timedelta(days=2)), "Note 2", "")
)

注意事项

  • 如果日期字段有时区属性,需先将today和日期列统一为相同时区再做判断,避免匹配失败
  • 如果需要按工作日偏移(跳过周末/法定节假日),可将timedelta(days=N)替换为pd.tseries.offsets.BDay(N)
  • 如果你的日期列存储的是字符串格式且有特殊格式,可在pd.to_datetime中传入format参数指定格式,提升转换效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 05:45:03