如何按索引名删除pandas DataFrame行?操作遇KeyError报错
问题原因及解决方法
核心问题:索引类型不匹配
你看到的索引显示1900-01-01看起来像字符串,但实际你的索引元素是datetime类型(从df.index的输出里,元素直接显示为日期格式而非带引号的字符串就能判断),而你用字符串'1900-01-01'去匹配,两者类型不兼容,所以pandas找不到对应的索引键。
解决办法
方法1:将字符串转为datetime对象后删除
import pandas as pd df = df.drop(index=pd.to_datetime('1900-01-01'))
或者用datetime模块:
from datetime import datetime df = df.drop(index=datetime(1900, 1, 1))
方法2:用布尔索引过滤
直接筛选掉目标日期对应的行:
import pandas as pd df = df[df.index != pd.to_datetime('1900-01-01')]
方法3:临时将索引转为字符串(不推荐,除非后续不需要日期操作)
如果只是临时处理,可以先把索引转成字符串类型再删除:
df.index = df.index.astype(str) df = df.drop(index='1900-01-01')
内容的提问来源于stack exchange,提问作者user21641220
相关产品推荐
相关产品推荐

