Python-Pandas:如何使用日期字符串对DatetimeIndex索引的DataFrame进行下标/切片/选择操作
解决DatetimeIndex索引的DataFrame访问问题
嘿,我来帮你梳理下这个问题~ 首先先澄清一个关键点:从你给出的索引类型信息来看,你的DataFrame索引已经是Pandas原生的DatetimeIndex了(dtype显示为datetime64[ns]),它的每个元素本身就是Pandas的Timestamp对象,所以完全不需要额外转换格式!
你遇到KeyError的原因其实是访问方式错了:df['2020-01-01']这种写法是用来访问列名的,而不是按索引行来查询。下面给你几个正确的访问方式:
最推荐的方式:用
.loc按索引标签访问
这是Pandas中按索引查询的标准用法,它会自动匹配DatetimeIndex的日期标签:df.loc['2020-01-01']如果你想查询某个日期范围,还可以这么写:
df.loc['2020-01-01':'2020-01-05']用datetime对象配合
.loc访问
如果你已经把字符串转成了datetime对象,只要确保它和索引的时区一致(你的索引无时区,所以直接用就行),同样用.loc:import datetime df.loc[datetime.datetime(2020, 1, 1, 0, 0)]按位置访问(可选)
如果知道目标行的位置,也可以用.iloc按整数位置查询:df.iloc[0] # 因为2020-01-01是第一行
如果你确实想手动确认索引的元素类型,可以打印看看:
print(type(df.index[0])) # 输出应该是 <class 'pandas._libs.tslibs.timestamps.Timestamp'>
总结一下,核心问题是混淆了“列访问”和“索引行访问”的语法,改用.loc就能解决你的报错啦!
内容的提问来源于stack exchange,提问作者TTT2
相关产品推荐
相关产品推荐

