2017-11-22 1 views
1

erholen zurück habe ich die folgenden Datenrahmen:Wie Pandas Dataframe rownames und Spaltennamen nach numpy Array Transformation

import numpy as np 
import pandas as pd 

x = [1.1,2.1,0.5] 
y = [0.1,3.4,7] 
gn = ['foo','bar','qux'] 
df = pd.DataFrame({'gn':gn, 'x':x, 'y':y}) 
df 

, die diese erzeugt: Dann nach der Umwandlung eine Umwandlung ich

In [148]: df 
Out[148]: 
    gn x y 
0 foo 1.1 0.1 
1 bar 2.1 3.4 
2 qux 0.5 7.0 

zu numpy ndarray:

df.set_index("gn",inplace=True) 
npar = df.as_matrix() 
npar_new = npar + 1 
npar_new 

Welche dies erzeugt:

array([[ 2.1, 1.1], 
     [ 3.1, 4.4], 
     [ 1.5, 8. ]]) 

Meine Frage ist, wie kann ich die Spalten- und Zeilennamen (gn) von df in npar_new erholen. Das gewünschte Endergebnis ist:

gn x y 
    foo 2.1 1.1 
    bar 3.1 4.4 
    qux 1.5 8.0 

Antwort

2

Sie

versuchen
df_new = pd.DataFrame(npar_new, index = df.index, columns = df.columns) 


    x y 
gn  
foo 2.1 1.1 
bar 3.1 4.4 
qux 1.5 8.0 
0

Ich habe Probleme zu verstehen, warum Sie die Array Umwandlung in erster Linie tun würden. Ist das ein Mandat? Wenn nicht, hier ist ein Pure-Play-Pandas Version, die alle Operationen auf einmal tun würde -

df = df + 1 

So wird vollständige Code sein -

import numpy as np 
import pandas as pd 

x = [1.1,2.1,0.5] 
y = [0.1,3.4,7] 
gn = ['foo','bar','qux'] 
df = pd.DataFrame({'gn':gn, 'x':x, 'y':y}) 
df = df + 1 
+0

Mein op ist nur ein Beispiel. In Wirklichkeit kommt 'npar_new' von einem sehr komplexen Prozess, der nur' np.darray' ausgibt. – scamander

+0

Bekam es. Danke fürs Aufräumen! –

1

Durch die Verwendung von .loc weisen Sie den Wert

df.loc[:,['x','y']]=ary 
df 
Out[849]: 
    gn x y 
0 foo 2.1 1.1 
1 bar 3.1 4.4 
2 qux 1.5 8.0 

weitere Informationen

ary=np.array([[ 2.1, 1.1], 
     [ 3.1, 4.4], 
     [ 1.5, 8. ]]) 

Da haben Sie mehr Spalte

df.loc[:,list(df.set_index("gn"))]=ary 
+0

danke. Aber 'x' und' y' explizit zu deklarieren ist ein bisschen mühsam. Coz in Wirklichkeit sind die Spaltennamen viele. – scamander

+0

@yaffle aktualisiert: -) – Wen

Verwandte Themen