Pandas处理CSV删除大于指定日期数据时出现KeyError的解决方法
错误原因
你代码存在3处核心问题,触发KeyError的直接原因是drop方法调用错误:
- 变量名混用:你定义的DataFrame变量为
df,但转换日期、设置索引时错用了不存在的变量daten drop方法入参错误:df.drop()第一个参数需要传入要删除的行索引值,你直接传入布尔判断序列时,pandas会把True/False当成索引名去查找,自然找不到对应项触发KeyError- 无需用
drop绕路,直接用布尔索引筛选符合要求的行效率更高
正确实现代码
import pandas as pd # 读取CSV文件 df = pd.read_csv('test.csv') # 转换Date列为日期格式 df["Date"] = pd.to_datetime(df["Date"], format="%Y-%m-%d") # 直接筛选Date小于指定日期的行 df = df[df["Date"] < "2010-01-05"] # 设置Date为索引 df.set_index("Date", inplace=True)
如果你一定要用drop方法实现,写法如下:
# 传入要删除的行对应的索引 df.drop(df[df["Date"] >= "2010-01-05"].index, axis=0, inplace=True)
内容的提问来源于stack exchange,提问作者Martin Kunze
相关产品推荐
相关产品推荐

