Ich möchte alles außer der ersten Spalte eines Pandas-Datenrahmens in ein Numpy-Array konvertieren. Aus irgendeinem Grund funktioniert die Verwendung des columns=
-Parameters von DataFrame.to_matrix()
nicht.
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
Ich habe X=df.as_matrix(columns=[df[1:]])
ausprobiert, aber dies ergibt ein Array aller NaN
s
Der Parameter columns
akzeptiert eine Auflistung von Spaltennamen. Sie übergeben eine Liste mit einem Datenrahmen mit zwei Zeilen:
>>> [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]])
Übergeben Sie stattdessen die gewünschten Spaltennamen:
>>> 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. ]])
der einfache Weg ist die "values" -Eigenschaft df.iloc[:,1:].values
a=df.iloc[:,1:]
b=df.iloc[:,1:].values
print(type(df))
print(type(a))
print(type(b))
so können Sie Typ erhalten
<class 'pandas.core.frame.DataFrame'>
<class 'pandas.core.frame.DataFrame'>
<class 'numpy.ndarray'>
.as_matrix()
. Eine kurze Zeile:df.iloc[:,[1,2,3]].as_matrix()
array([[3, 2, 0.816497],
[0, 'NaN', 'NaN'],
[2, 51, 50.0]], dtype=object)
Hier sind die Schritte für Ihr Beispiel:
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)
Gibt:
viz a1_count a1_mean a1_std
0 n 3 2 0.816497
1 n 0 NaN NaN
2 n 2 51 50
Dann:
x1 = df.iloc[:,[1,2,3]].as_matrix()
Gibt:
array([[3, 2, 0.816497],
[0, 'NaN', 'NaN'],
[2, 51, 50.0]], dtype=object)
Dabei ist x1 numpy.ndarray
.
Die beste Methode zum Konvertieren in Numpy Array ist die Verwendung von '.to_numpy (self, dtype = None, copy = False)'. Es ist neu in Version 0.24.0 . Aktualisierung
Sie können auch '.array' verwenden. . Aktualisieren
Pandas .as_matrix ist seit Version 0.23.0 veraltet.