将MinMaxScaler输出的numpy数组转DataFrame报TypeError如何解决
错误原因
你的报错来自两个语法问题:
- 你用numpy数组的二维切片语法操作pandas DataFrame:pandas的
[]取值默认匹配列名,不支持直接传入(行切片, 列索引)格式的二维切片,所以df1[1:,0]会直接触发类型错误。 pd.DataFrame构造函数不存在名为dftransformed的参数,第一个参数直接传入数组数据即可,不需要自定义参数名。
解决方法
场景1:需要完整复用原df1的所有索引、列信息
如果你没有特殊的切片需求,MinMax Scaler输出的数组顺序和原df1的行、列顺序完全对应,直接调用即可:
dftransformedtoDF = pd.DataFrame(dftransformed, index=df1.index, columns=df1.columns)
场景2:确实需要切除第一行/第一列数据
如果你的业务逻辑需要跳过第一行、第一列,用pandas的iloc位置索引器取对应的索引和列名即可:
# 取df1从第1行(下标从0开始)开始的所有行的索引 target_index = df1.iloc[1:].index # 取df1从第1列开始的所有列名 target_columns = df1.columns[1:] # 用切好的数组和元信息构造DataFrame dftransformedtoDF = pd.DataFrame(dftransformed[1:, 1:], index=target_index, columns=target_columns)
额外说明
不需要手动把索引、列信息转成numpy数组,pandas的DataFrame构造函数原生支持直接传入Index类型的索引、列名参数,不需要额外转换。
内容的提问来源于stack exchange,提问作者rubengavidia0x
相关产品推荐
相关产品推荐

