Pandas DataFrame到Numpy数组ValueError

时间:2015-08-03 15:43:10

标签: python numpy pandas

我正在尝试将数据帧的单个列转换为numpy数组。转换整个数据框没有问题。

DF

List<Book> scanResult = mapper.scan(Book.class, scanExpression);

for (Book book : scanResult) {
    System.out.println(book);
}

这两个功能都可以正常工作:

  viz  a1_count  a1_mean     a1_std
0   0         3        2   0.816497
1   1         0      NaN        NaN 
2   0         2       51  50.000000

然而,当我尝试:

X = df.as_matrix()
X = df.as_matrix(columns=df.columns[1:])

我明白了:

y = df.as_matrix(columns=df.columns[0])

3 个答案:

答案 0 :(得分:2)

这里的问题是你只传递了一个单独的元素,在这种情况下只是该列的字符串标题,如果你将它转换为具有单个元素的列表,那么它可以工作:

In [97]:
y = df.as_matrix(columns=[df.columns[0]])
y

Out[97]:
array([[0],
       [1],
       [0]], dtype=int64)

这是你传递的内容:

In [101]:
df.columns[0]

Out[101]:
'viz'

所以它等同于:

y = df.as_matrix(columns='viz')

导致相同的错误

docs显示预期的参数:

  

DataFrame.as_matrix(columns = None)将帧转换为Numpy数组   表示。

     

参数:columns:list,optional,default:None如果为None,则返回all   否则,列返回指定的列

答案 1 :(得分:2)

as_matrix预计list关键字的columnsdf.columns[0]不是列表。尝试 而是df.as_matrix(columns=[df.columns[0]])

答案 2 :(得分:0)

使用索引tolist函数也可以

df.as_matrix(columns=df.columns[0].tolist())

当给出多个列时,例如,首先是10,然后是命令

df.as_matrix(columns=[df.columns[0:10]])

不起作用,因为它返回索引。但是,使用

df.as_matrix(columns=df.columns[0:10].tolist())

效果很好。