2017-07-21 2 views
0

Ich versuche, zwei Pandas Datenrahmen voneinander zu subtrahieren, sondern erhalten nur NaN Ergebnisse:Subtraction der Pandas Datenrahmen

Dataframe 1: 
    alpha beta 
0  1  4 
1  2  5 
2  3  6 

Dataframe 2: 
    gamma 
0  7 
1  8 
2  9 

Datenframe-Betrieb:

df3=df1-df2 

Ergebnis:

alpha beta gamma 
0 NaN NaN NaN 
1 NaN NaN NaN 
2 NaN NaN NaN 

Wenn ich jedoch alles in numpy Matrizen konvertieren, funktioniert es:

Matrix Betrieb:

matrix3=df1.as_matrix(['alpha','beta'])-df2.as_matrix(['gamma']) 

Ergebnis:

[[-6 -3] 
[-6 -3] 
[-6 -3]] 

Wie kann ich diese Arbeit mit Pandas machen?

Antwort

3

Jede dieser Arbeit:

df['a'] = df['a'] - df2['gamma'] 
df['b'] = df['b'] - df2['gamma'] 

-

df.sub(df2.iloc[:,0],axis=0) 
+0

Die ersten Arbeiten Möglichkeit war aber nicht meine Frage. Besonders kompliziert wird es, wenn mehr Spalten beteiligt sind. Der zweite ist genau das, was ich brauchte und beantwortet die Frage. - Obwohl ich es ein bisschen kryptisch finde. – Francesca

+0

Für die erste Methode könnten Sie jede Spalte in einer Schleife immer multiplizieren? –