如何通过索引获取DataFrame的OT与OH列?切片异常求解
问题分析与解决
你忽略的核心关键点是:Timestamp是DataFrame的索引(Index),而非普通数据列。
具体原因
从你的输出表格来看,Timestamp是行标签,不属于DataFrame的列集合:
- 执行
values.columns会得到Index(['OT', 'OH'], dtype='object'),说明实际只有2列,OT是第0位,OH是第1位。 - 你用
iloc[:, 1:2]时,iloc的切片遵循左闭右开规则,只会取第1列(也就是OH);values.columns[1:2]同理,只返回第1个列名OH。
正确的取值方法
要获取OT和OH两列,有两种可靠方式:
- 用列名直接索引(最直观,推荐):
print(values[['OT', 'OH']])
- 用
iloc切片覆盖0到2的范围(左闭右开,会包含第0和第1列):
print(values.iloc[:, 0:2])
额外补充
如果需要把Timestamp转为普通数据列,可以执行:
values = values.reset_index()
此时Timestamp会成为第0列,OT是第1列,OH是第2列,这时用iloc[:, 1:3]就能拿到目标列,但这种做法没必要,直接用列名索引更清晰。
内容的提问来源于stack exchange,提问作者Miguel Moura
相关产品推荐
相关产品推荐

