Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数据帧转换为Numpy数组值错误_Python_Numpy_Pandas - Fatal编程技术网

Python 将数据帧转换为Numpy数组值错误

Python 将数据帧转换为Numpy数组值错误,python,numpy,pandas,Python,Numpy,Pandas,我正在尝试将数据帧的单个列转换为numpy数组。转换整个数据帧没有问题 df 这两种功能都可以正常工作: X = df.as_matrix() X = df.as_matrix(columns=df.columns[1:]) 但是,当我尝试时: y = df.as_matrix(columns=df.columns[0]) 我得到: TypeError: Index(...) must be called with a collection of some kind, 'viz' was p

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

df

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

X = df.as_matrix()
X = df.as_matrix(columns=df.columns[1:])
但是,当我尝试时:

y = df.as_matrix(columns=df.columns[0])
我得到:

TypeError: Index(...) must be called with a collection of some kind, 'viz' was passed

这里的问题是,您只传递了一个元素,在本例中,该元素只是该列的字符串标题,如果您将其转换为一个包含单个元素的列表,则它可以工作:

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')
这会导致同样的错误

将显示预期的参数:

DataFrame.as_matrixcolumns=None将帧转换为其Numpy数组 代表性

参数:列:列表,可选,默认值:无如果无,返回全部 列,否则返回指定的列

正如_matrix所期望的那样,columns关键字需要一个列表,而df.columns[0]不是一个列表。尝试
df.as_matrixcolumns=[df.columns[0].

使用index-tolist函数也可以

df.as_matrix(columns=df.columns[0].tolist())
例如,在给定多个列时,首先是十列,然后是命令

df.as_matrix(columns=[df.columns[0:10]])
当它返回索引时不起作用。然而,使用

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

效果很好。

谢谢您的解释。为什么它对columns=df.columns[1:]有效,而没有将其封装在列表中?因为它返回一个数组,但当它是单个元素选择时,它只返回单个对象,因为df.columns[1:]已经是一个列表。考虑:li=[1,2,3,4]li[1::]->[2,3,4]
df.as_matrix(columns=df.columns[0:10].tolist())