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

Pandas对比两列条件更新DataFrame日期列的实现方法

Pandas按多条件更新日期列实现方法

操作前先确认两个核心前提:

  • 日期列必须转换为datetime64类型,否则无法直接做日期偏移计算
  • 字符串匹配注意大小写差异,若数据存在大小写不统一的情况,可先对字符串列做统一大小写处理,避免匹配遗漏

示例数据初始化

import pandas as pd
import numpy as np

# 构造示例数据集
df = pd.DataFrame({
    "Col A": [5,7,4,3],
    "ColB": ["Internal", "external", "external", "external"],
    "colc": ["1-1-2022", "1-1-2022", "1-1-2022", "1-1-2022"]
})

# 将日期列转为标准datetime格式,指定格式避免解析错误
df["colc"] = pd.to_datetime(df["colc"], format="%m-%d-%Y")

按规则批量更新日期

使用np.select做向量化条件判断,相比逐行循环性能更高,适配大数据量场景:

# 按优先级定义判断条件(Internal规则优先级最高,放在最前)
conditions = [
    df["ColB"] == "Internal",
    (df["ColB"] == "external") & (df["Col A"] < 8),
    (df["ColB"] == "external") & (df["Col A"] >= 8)
]
# 定义每个条件对应的叠加天数
offset_days = [120, 7, 30]

# 计算偏移后的日期,未命中任何条件的行默认叠加0天
df["colc"] = df["colc"] + pd.to_timedelta(
    np.select(conditions, offset_days, default=0), 
    unit="D"
)

处理结果

运行后输出的数据集如下:

Col A      ColB       colc
0      5  Internal 2022-05-01
1      7  external 2022-01-08
2      4  external 2022-01-08
3      3  external 2022-01-08

注:如果你的数据中ColB列的外部类型取值为首字母大写的External,直接修改条件里的匹配字符串即可;也可以提前执行df["ColB"] = df["ColB"].str.lower()将所有字符串统一转小写后再做匹配,避免大小写导致的匹配失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:51:17