如何在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
相关产品推荐
相关产品推荐

