Pandas数据帧到Numpy数组值

2024-06-08 18:03:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

数据框

  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])

我得到:

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

Tags: columns数据功能numpydfa1ascount
3条回答

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

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) Convert the frame to its Numpy-array representation.

Parameters: columns: list, optional, default:None If None, return all columns, otherwise, returns specified columns

使用index 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())

效果很好。

as_matrix需要list作为columns关键字,df.columns[0]不是列表。尝试 df.as_matrix(columns=[df.columns[0]])取而代之。

相关问题 更多 >