pandasデータフレームの最初の列を除くすべてをnumpy配列に変換したいと思います。何らかの理由で、DataFrame.to_matrix()
のcolumns=
パラメーターを使用しても機能しません。
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
X=df.as_matrix(columns=[df[1:]])
を試しましたが、これはすべてのNaN
sの配列を生成します
columns
パラメーターは、列名のコレクションを受け入れます。 2行のデータフレームを含むリストを渡します:
>>> [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. ]])
簡単な方法は、「値」プロパティ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'>
.as_matrix()
を使用することです。 1つの短い行: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
です。