将Pandas Dataframe中的Select Columns转换为Numpy Array

Ada*_*m_G 38 python numpy pandas

我想将除了pandas数据帧的第一列之外的所有内容转换为numpy数组.由于某些原因使用columns=参数DataFrame.to_matrix()不起作用.

DF:

  viz  a1_count  a1_mean     a1_std
0   n         3        2   0.816497
1   n         0      NaN        NaN 
2   n         2       51  50.000000
Run Code Online (Sandbox Code Playgroud)

我试过,X=df.as_matrix(columns=[df[1:]])但这产生了所有NaNs 的数组

176*_*ing 65

简单的方法是"价值"属性 df.iloc[:,1:].values

a=df.iloc[:,1:]
b=df.iloc[:,1:].values

print(type(df))
print(type(a))
print(type(b))
Run Code Online (Sandbox Code Playgroud)

所以,你可以得到类型

<class 'pandas.core.frame.DataFrame'>
<class 'pandas.core.frame.DataFrame'>
<class 'numpy.ndarray'>
Run Code Online (Sandbox Code Playgroud)

  • 或者,如果您想按名称而不是位置提取列:`df [['a1_count','a1_mean','a1_std']]。values` (3认同)

Suv*_*uvo 43

请使用Pandasto_numpy()方法。下面是一个例子——

>>> import pandas as pd
>>> df = pd.DataFrame({"A":[1, 2], "B":[3, 4], "C":[5, 6]})
>>> df 
    A  B  C
 0  1  3  5
 1  2  4  6
>>> s_array = df[["A", "B", "C"]].to_numpy()
>>> s_array

array([[1, 3, 5],
   [2, 4, 6]]) 

>>> t_array = df[["B", "C"]].to_numpy() 
>>> print (t_array)

[[3 5]
 [4 6]]
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。您可以使用选择任意数量的列

columns = ['col1', 'col2', 'col3']
df1 = df[columns]
Run Code Online (Sandbox Code Playgroud)

然后应用to_numpy()方法。


DSM*_*DSM 37

columns参数接受列名称的集合.您传递的列表包含两行数据框:

>>> [df[1:]]
[  viz  a1_count  a1_mean  a1_std
1   n         0      NaN     NaN
2   n         2       51      50]
>>> df.as_matrix(columns=[df[1:]])
array([[ nan,  nan],
       [ nan,  nan],
       [ nan,  nan]])
Run Code Online (Sandbox Code Playgroud)

而是传递所需的列名称:

>>> df.columns[1:]
Index(['a1_count', 'a1_mean', 'a1_std'], dtype='object')
>>> df.as_matrix(columns=df.columns[1:])
array([[  3.      ,   2.      ,   0.816497],
       [  0.      ,        nan,        nan],
       [  2.      ,  51.      ,  50.      ]])
Run Code Online (Sandbox Code Playgroud)

  • 我只想补充一点,as_matrix在将来的版本中将被删除,而我收到的消息称将使用.values。 (2认同)
  • 现在不推荐使用as_matrix。 (2认同)
  • 尝试使用 `values` 而不是 `as_matrix` (2认同)
  • 从0.24.0版本开始,只需在您的列上使用`to_numpy`方法(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_numpy.html#pandas.DataFrame.to_numpy) (2认同)

小智 5

转换为 Numpy 数组的最佳方法是使用 '.to_numpy(self, dtype=None, copy=False)'。它是 0.24.0 版中的新功能。参考

您也可以使用“.array”。参考

Pandas .as_matrix 自 0.23.0 版起已弃用。


Kam*_*kov 5

希望这个简单的衬里有助于:

cols_as_np = df[df.columns[1:]].to_numpy()
Run Code Online (Sandbox Code Playgroud)