pandas读取Excel按日期范围筛选返回空DataFrame,输出长度0与预期824不符
问题原因
pandas使用loc对索引做范围切片时,遵循索引顺序匹配原则:
- 你的Excel数据里
timestamp列默认是按时间正序排列的(更早的日期在前,更晚的日期在后),设置为索引后索引顺序也保持正序。 - 你写的切片范围是
"2011-08-20":"2008-05-15",把更晚的日期放在了切片起始位,更早的日期放在结束位,在正序索引里这个区间没有对应数据,所以返回空DataFrame,长度为0。
解决方法
两种方案任选即可:
- 调整切片的起止顺序,把更早的日期放在切片起始位,更晚的放在结束位:
# 替换原切片行为 rango = dateindextime.loc["2008-05-15":"2011-08-20"]
- 先对时间索引做排序,再执行切片,避免索引顺序混乱导致的匹配问题:
dateindextime = data.set_index("timestamp").sort_index() rango = dateindextime.loc["2008-05-15":"2011-08-20"]
修改后再次执行print(len(rango))就会得到预期的824结果。
内容的提问来源于stack exchange,提问作者julian Marzabal
相关产品推荐
相关产品推荐

