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

如何在Pandas中过滤日期列?快速过滤遇类型错误求助

在Pandas中过滤日期列的正确姿势

嘿,这个问题我太熟悉啦!咱们先搞清楚你报错的原因,再一步步解决~

为什么会报TypeError: invalid type comparison?

你写的2018-12-1在Python里会被当成整数减法运算:2018 - 12 - 1 = 2005,本质是个整数。而你的DATE列要么是字符串类型,要么是datetime类型,拿整数和日期类型做比较,自然会触发类型不匹配的错误。

正确的解决步骤

第一步:确保DATE列是datetime类型

首先得把你的日期列转换成Pandas能识别的datetime格式,如果它现在是字符串的话:

import pandas as pd

# 转换为datetime类型,errors='coerce'会把无效日期转为NaN
df_dexu['DATE'] = pd.to_datetime(df_dexu['DATE'], errors='coerce')

如果转换后有NaN值(无效日期),可以用下面的代码去掉这些行:

df_dexu = df_dexu.dropna(subset=['DATE'])

第二步:编写正确的过滤条件

现在DATE列是datetime类型了,我们可以用三种方式构造过滤条件:

方式1:用pd.Timestamp创建日期对象(最推荐,明确清晰)

quickfilter = df_dexu['DATE'] < pd.Timestamp('2018-12-01')
df_dexu = df_dexu[quickfilter]

方式2:直接用日期字符串(Pandas会自动解析)

quickfilter = df_dexu['DATE'] < '2018-12-01'
df_dexu = df_dexu[quickfilter]

方式3:用Python内置的datetime模块

from datetime import datetime

quickfilter = df_dexu['DATE'] < datetime(2018, 12, 1)
df_dexu = df_dexu[quickfilter]

这样操作后,就能正确过滤出DATE列早于2018年12月1日的数据啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:57:15