Pandas按大于指定日期过滤AssessedDate列结果异常如何修复?
问题原因
你当前的AssessedDate列和assessdateprev都是字符串类型,过滤时执行的是字符串字典序比较,而非日期大小比较,才会出现异常结果:
- 2020年9月的日期字符串以
9开头,字典序大于以8开头的阈值8/31/2021 00:00,所以错误保留 - 8月6日的日期字符串
8/6/xxxx的第三个字符是6,字典序大于阈值8/31/xxxx的第三个字符3,也会被判定为大于阈值,错误保留
修复方案
先将两部分都转换为pandas标准datetime类型后再执行过滤:
- 转换日期列格式
import pandas as pd netnewprocess['AssessedDate'] = pd.to_datetime(netnewprocess['AssessedDate'])
如果出现日期解析异常,可显式指定日期格式保证转换正确:
netnewprocess['AssessedDate'] = pd.to_datetime(netnewprocess['AssessedDate'], format="%m/%d/%Y %I:%M:%S %p")
- 转换阈值日期格式
assessdateprev = pd.to_datetime('8/31/2021 00:00')
- 执行原有过滤逻辑即可
netnewprocess = netnewprocess[(netnewprocess['AssessedDate'] > assessdateprev)]
内容的提问来源于stack exchange,提问作者Jonnyboi
相关产品推荐
相关产品推荐

