Python使用pandas读取Excel切片报TypeError无效键错误怎么办
报错原因
pd.read_excel() 读取文件后返回的是pandas DataFrame对象,并非numpy数组,二者索引规则不通用。你写的[:, np.newaxis,2]是numpy的多维切片语法,直接传给DataFrame作为索引key时,DataFrame无法识别三维切片规则,就会抛出invalid key的类型错误。
修复方案
根据你的实际需求二选一即可:
- 需要保留numpy升维(
np.newaxis新增维度)的逻辑:先把DataFrame转为numpy数组,再执行切片操作
import pandas as pd import numpy as np data = pd.read_excel('<file path>PriceOdometerV3.xlsx') # .to_numpy()是pandas官方推荐的数组转换方法,兼容pandas1.0及以上版本 df_X = data.to_numpy()[:, np.newaxis, 2] # 旧版本pandas可以用.values属性实现相同效果 # df_X = data.values[:, np.newaxis, 2]
- 仅需提取DataFrame中第3列(位置索引为2)的数据,不需要额外升维:直接用pandas原生的位置索引方法
iloc取值即可
# 取所有行、位置索引为2的列,返回pandas Series对象 df_X = data.iloc[:, 2] # 如果取完列之后还需要新增维度,可以在取数后转numpy再升维 # df_X = data.iloc[:, 2].to_numpy()[:, np.newaxis]
索引规则提示:pandas DataFrame按位置切片固定用
iloc方法,按行列标签切片固定用loc方法,不要直接套用numpy的多维切片语法操作DataFrame。
内容的提问来源于stack exchange,提问作者UPE_2016
相关产品推荐
相关产品推荐

