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

如何解决判断日期是否在两日期区间时的TypeError错误

问题解决:日期区间哑变量生成报错修复

错误原因

你写的2022-02-13会被Python解析成整数运算:2022-2-13=1997,是int类型,而df['Date']里的元素是Timestamp类型,两种类型无法直接用<=比较,因此抛出TypeError。

修复方案

方法1:构造Timestamp日期对象进行比较

把用于判断的日期字符串转为Timestamp类型,和Date列元素类型匹配:

import pandas as pd

data = {'Date': ['2022-01-02', '2022-01-13','2022-02-12','2022-02-15']}
df = pd.DataFrame(data)
# 确保Date列为datetime类型(若未自动转换)
df['Date'] = pd.to_datetime(df['Date'])

# 定义区间日期
start_date = pd.Timestamp('2022-02-11')
end_date = pd.Timestamp('2022-02-13')
# 生成哑变量
df['2/11-2/13  DV'] = df['Date'].apply(lambda x: 1 if (start_date <= x <= end_date) else 0)

方法2:向量化布尔运算(更高效,推荐)

Pandas支持直接对整列做布尔运算,无需apply,执行速度更快:

import pandas as pd

data = {'Date': ['2022-01-02', '2022-01-13','2022-02-12','2022-02-15']}
df = pd.DataFrame(data)
df['Date'] = pd.to_datetime(df['Date'])

# 直接通过列运算生成哑变量,Pandas会自动转换日期字符串为Timestamp
df['2/11-2/13  DV'] = ((df['Date'] >= '2022-02-11') & (df['Date'] <= '2022-02-13')).astype(int)

最终结果

运行后DataFrame内容:

Date2/11-2/13 DV
2022-01-020
2022-01-130
2022-02-121
2022-02-150

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:50:29