我想将除了pandas数据帧的第一列之外的所有内容转换为numpy数组。由于某些原因,使用columns=
的{{1}}参数无效。
DF:
DataFrame.to_matrix()
我尝试了 viz a1_count a1_mean a1_std
0 n 3 2 0.816497
1 n 0 NaN NaN
2 n 2 51 50.000000
,但这产生了一个包含所有X=df.as_matrix(columns=[df[1:]])
s
答案 0 :(得分:56)
简单的方法是“值”属性df.iloc[:,1:].values
a=df.iloc[:,1:]
b=df.iloc[:,1:].values
print(type(df))
print(type(a))
print(type(b))
所以,你可以得到类型
<class 'pandas.core.frame.DataFrame'>
<class 'pandas.core.frame.DataFrame'>
<class 'numpy.ndarray'>
答案 1 :(得分:30)
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]])
相反,传递所需的列名称:
>>> 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. ]])
答案 2 :(得分:2)
请使用Pandas to_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]]
希望这会有所帮助。您可以使用
选择任意数量的列columns = ['col1', 'col2', 'col3']
df1 = df[columns]
然后应用to_numpy()
方法。
答案 3 :(得分:1)
希望这种简单的内衬有帮助:
cols_as_np = df[df.columns[1:]].to_numpy()
答案 4 :(得分:0)
转换为Numpy数组的最佳方法是使用'.to_numpy(self,dtype = None,copy = False)'。它是0.24.0版的新功能。Refrence
您还可以使用'.array'。Refrence
Pandas .as_matrix自0.23.0版起已弃用。
答案 5 :(得分:-1)
.as_matrix()
。一条短线:df.iloc[:,[1,2,3]].as_matrix()
array([[3, 2, 0.816497],
[0, 'NaN', 'NaN'],
[2, 51, 50.0]], dtype=object)
以下是您的示例步骤:
import pandas as pd
columns = ['viz', 'a1_count', 'a1_mean', 'a1_std']
index = [0,1,2]
vals = {'viz': ['n','n','n'], 'a1_count': [3,0,2], 'a1_mean': [2,'NaN', 51], 'a1_std': [0.816497, 'NaN', 50.000000]}
df = pd.DataFrame(vals, columns=columns, index=index)
礼物:
viz a1_count a1_mean a1_std
0 n 3 2 0.816497
1 n 0 NaN NaN
2 n 2 51 50
然后:
x1 = df.iloc[:,[1,2,3]].as_matrix()
礼物:
array([[3, 2, 0.816497],
[0, 'NaN', 'NaN'],
[2, 51, 50.0]], dtype=object)
x1是numpy.ndarray
的地方。