我正在尝试将数据帧的单个列转换为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])
答案 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
关键字的columns
和df.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())
效果很好。