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

如何用Pandas创建列判断日期是否在指定区间内

解决方法

要给DataFrame添加validDate列,判断eventDate是否在指定日期范围内,可按以下步骤操作:

1. (推荐)转换日期列类型

先把字符串类型的eventDate转为datetime类型,避免字符串比较可能出现的异常:

import pandas as pd

# 假设你的DataFrame名为df
df['eventDate'] = pd.to_datetime(df['eventDate'])

如果列中存在无效日期字符串,可添加errors='coerce'参数将无效值转为NaT,这类值后续会被判定为No:

df['eventDate'] = pd.to_datetime(df['eventDate'], errors='coerce')

2. 生成validDate列

方法一:用numpy.where快速判断

import numpy as np

# 先把起止日期转为datetime类型
startDate = pd.to_datetime('2005-01-20')
endDate = pd.to_datetime('2010-08-20')

# 按条件生成新列
df['validDate'] = np.where((df['eventDate'] >= startDate) & (df['eventDate'] <= endDate), 'Yes', 'No')

方法二:用apply自定义函数判断

如果偏好更直观的函数式写法:

startDate = pd.to_datetime('2005-01-20')
endDate = pd.to_datetime('2010-08-20')

def check_date_validity(date):
    return 'Yes' if startDate <= date <= endDate else 'No'

df['validDate'] = df['eventDate'].apply(check_date_validity)

方法三:直接用字符串比较(不推荐但可行)

由于ISO格式的日期字符串按字典序排列的顺序和时间顺序一致,也可以直接用字符串比较:

startDate = '2005-01-20'
endDate = '2010-08-20'
df['validDate'] = np.where((df['eventDate'] >= startDate) & (df['eventDate'] <= endDate), 'Yes', 'No')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:40:50