2016-07-11 6 views
0

Ich habe einen Pandas-Datenrahmen mit 506 Zeilen. Ich habe ein Nummernfeld mit 501 Elementen, die aus dem Datenrahmen berechnet werden.Verknüpfen kürzerer Länge Numpy Array zu Pandas Datarahmen

Ich möchte das numpy-Array an den Datenrahmen anschließen, den Index des Datenrahmens beibehalten und den Index des numpy-Arrays mit dem ersten Indexwert des Datenrahmens starten.

Das Problem ist, dass der Join-Vorgang fehlschlägt, weil das Numy Array eine andere Länge und keine Ahnung von Zeilenindizes hat.

Gibt es einen cleveren Weg, dies zu lösen?

Antwort

1

I eine Series vom np Array konstruieren würde, und dann ein neues Series konstruieren aber das Ziel df Index Pass Dies indiziert effektiv die vorhandenen Series, Einführung NaN Werte, wo es keine Zeilenwerte sind, wird dieser auszurichten korrekt gegen das Ziel df:

In [51]:  
df = pd.DataFrame(np.random.randn(5,3), columns=list('abc')) 
s = pd.Series(np.arange(3)) 
s1 = pd.Series(s, index=df.index) 
s1 

Out[51]: 
0 0.0 
1 1.0 
2 2.0 
3 NaN 
4 NaN 
dtype: float64 

In [53]: 
df['d'] = s1 
df 

Out[53]: 
      a   b   c d 
0 0.990381 2.583867 0.018435 0.0 
1 0.867695 -0.958220 -0.351783 1.0 
2 0.476210 -1.015887 1.285303 2.0 
3 -0.198863 -2.514740 1.228772 NaN