Pandas使用字符串索引日期索引报KeyError及索引类型疑问
问题解答
索引类型说明
你构建DataFrame时用的键是Python原生datetime.date类的对象,pandas不会自动将该类型转换为内置的datetime64类型,因此整个索引的dtype为object,每个索引元素的实际类型是Python原生datetime.date。
KeyError触发原因
df.loc['2016-10-03']用字符串类型的日期值去匹配索引,而索引元素是datetime.date类型,二者类型不匹配无法命中对应行,因此抛出KeyError。
解决方法
- 方法1:索引时传入和索引元素同类型的
datetime.date对象
import datetime df.loc[datetime.date(2016, 10, 3)]
- 方法2:将索引转换为pandas的
DatetimeIndex类型,转换后支持直接用字符串做日期索引
df.index = pd.to_datetime(df.index) # 转换后即可正常用字符串索引 df.loc['2016-10-03']
内容的提问来源于stack exchange,提问作者moth
相关产品推荐
相关产品推荐

