代码之家  ›  专栏  ›  技术社区  ›  Harikrishna

将数组结构转换为数据帧以获取列名

  •  0
  • Harikrishna  · 技术社区  · 8 年前

    我有一个数据帧,我已经转换成一个数组,使用回归算法对数据建模。我用了下面的代码

    X=df.iloc[:, 0:345].values
    Y=df.iloc[:,345].values
    

    from sklearn.cross_validation import train_test_split
    from sklearn.preprocessing import StandardScaler
    
    X_train,X_test,y_train,y_test=train_test_split(X,Y,test_size=0.25,random_state=0)
    

    现在,在我完成了模型的构建和预测之后,我想得到我的分类变量的值(X&Y是在为所有分类变量创建虚拟变量之后创建的),为此,我试图将我的X_测试转换回一个数据帧,该数据帧的列名在原始数据帧df中。我试过下面的代码

    dff=df.iloc[:, 0:345]
    

    上面的语句获取(数据帧的)前345列。

    那么,

    pd.DataFrame(X_test, index=dff.index, columns=dff.columns)
    

    我得到以下错误

    ValueError: Shape of passed values is (345, 25000), indices imply (345, 100000)
    

    2 回复  |  直到 8 年前
        1
  •  1
  •   Harikrishna    8 年前
    pd.DataFrame(X_test, index=dff.index, columns=dff.columns)
    

    X_test 成为一个新潮的人

    df_new=pd.DataFrame(X_test)
    df_new.columns=list(dff.columns)
    

    新的数据帧包含 X_检验 数据和列名是从 dff

        2
  •  0
  •   Nick Tallant    8 年前

    我建议使用数据帧 train_test_split ,然后使用numpy将数组传递给算法:

    my_algorithm(np.asarray(X_train), np.asarray(y_train))