AttributeError:“numpy.ndarray”对象没有属性“列”

Posted

技术标签:

【中文标题】AttributeError:“numpy.ndarray”对象没有属性“列”【英文标题】:AttributeError: 'numpy.ndarray' object has no attribute 'columns' 【发布时间】:2016-06-29 02:10:18 【问题描述】:

我正在尝试创建一个函数来删除彼此高度相关的特征。但是,我收到错误 ''AttributeError: 'numpy.ndarray' object has no attribute 'columns' '' ...

我只想调用 pandas 来读取列号。下一步我能做什么?

import pandas as pd
import numpy as np

def remove_features_identical(DataFrame,data_source):
    n=len(DataFrame.columns)
    print 'dealing with %d features of %s data......... \n' % (n,data_source)
    remove_ind = []
    R = np.corrcoef(DataFrame.T)
    for i in range(n-1):
        for j in range(i+1,n):
            if R[i,j]==1:
                remove_ind.append(j)    

    DataFrame.drop(remove_ind, axis=1, inplace=True)
    DataFrame.drop(remove_ind, axis=1, inplace=True)
    print ('deleting %d columns with correration factor >0.99') % ( len(remove_ind))
    return DataFrame

if __name__ == "__main__":
    # load data and initialize y and x from train set and test set
    df_train = pd.read_csv('train.csv')
    df_test = pd.read_csv('test.csv')
    y_train=df_train['TARGET'].values
    X_train =df_train.drop(['ID','TARGET'], axis=1).values
    y_test=[]
    X_test = df_test.drop(['ID'], axis=1).values

    # delete identical feartures in raw data
    X_train = remove_features_identical(X_train,'train set')
    X_test = remove_features_identical(X_test,'test set')

【问题讨论】:

【参考方案1】:

查看 Pandas 文档,但我认为

X_train = df_train.drop(['ID','TARGET'], axis=1).values

.values 返回一个 numpy 数组,而不是 Pandas 数据框。数组没有columns 属性。

remove_features_identical - 如果你传递一个数组,请确保你只使用数组,而不是数据框,特性。否则,请确保将数据框传递给它。并且不要使用像DataFrame 这样的变量名。

【讨论】:

【参考方案2】:

检查我们列的名称是什么

unscaled_inputs.columns.values

【讨论】:

【参考方案3】:

也许这个解决方案可以解决这个问题,试试这个:

X_train = pd.DataFrame(X_train, columns = X.columns)

X_test = pd.DataFrame(X_test, columns=X.columns)

【讨论】:

以上是关于AttributeError:“numpy.ndarray”对象没有属性“列”的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError:“模块”对象没有属性“作者”

初学者 Python:AttributeError:'list' 对象没有属性

AttributeError:“字节”对象没有属性“告诉”

AttributeError: 'RDD' 对象没有属性 'show'

AttributeError:“NumpyArrayIterator”对象没有属性“类”

AttributeError:模块 'dbus' 没有属性 'lowlevel'