2017-03-24 4 views
1

ein Beispiel Datenrahmen Hinzufügen Gegeben: siehteine Zeile mit weniger Werte zu einem Pandas Datenrahmen

import pandas as pd 
import numpy as np 

values = np.array([ 
    [0, 0.5, 1, 0, 0, 3], 
    [1, 0, 0, 1, 1, 0 ], 
    [0, 0.5, 0, 0, 2, 1], 
    [0, 0, 0, 0, 4, 0],   
]) 

indexes= 'a','b','c','d' 

columns='ab','bc','cd','de','ef','fg' 

df = pd.DataFrame(index=indexes,columns=columns, data=values) 

print(df) 

die wie:

ab bc cd de ef fg 
a 0.0 0.5 1.0 0.0 0.0 3.0 
b 1.0 0.0 0.0 1.0 1.0 0.0 
c 0.0 0.5 0.0 0.0 2.0 1.0 
d 0.0 0.0 0.0 0.0 4.0 0.0 

gewünschte Ausgabe: irgendwie möglich

ab bc cd de ef fg 
a 0.0 0.5 1.0 0.0 0.0 3.0 
b 1.0 0.0 0.0 1.0 1.0 0.0 
c 0.0 0.5 0.0 0.0 2.0 1.0 
d 0.0 0.0 0.0 0.0 4.0 0.0 
e Nan Nan Nan NAn 7.0 4.0 

Ist es um eine Zeile hinzuzufügen, in der nur die Summen der letzten beiden Spalten angezeigt werden? (Natürlich unter den jeweiligen Spalten)

Vielen Dank für Ihre Aufmerksamkeit!

+1

letzten beiden Spalten oder letzten beiden Zeilen verwenden können? Vielleicht geben Sie Ihre gewünschte Ausgabe. – Psidom

+0

Guter Punkt, @Psidom ... – bernie

+0

Entschuldigung, was ich dachte ist, dass ich eine Zeile hinzufügen möchte, wo ich die Summe der vorletzten Spalte Werte (unter der zweiten Spalte) und die Summe der letzten anzeigen Spaltenwerte (unter der letzten Spalte). Halten Sie die anderen Zellen der Zeile leer. Hoffe, jetzt klar zu sein! – Paauulus

Antwort

1

Bearbeiten: ohhh. Danke für die Klarstellung. Sie erstellen eine neue Zeile und weisen diese der Summe der letzten zwei Spalten zu. Der iloc Indexer hat das Format [row, col]. So wollen wir : alle Zeilen aber nur die letzten zwei Spalten -2:.

df.loc['e'] = df.iloc[:,-2:].sum() 

Ergebnis:

>>> df 
    ab bc cd de ef fg 
a 0.0 0.5 1.0 0.0 0.0 3.0 
b 1.0 0.0 0.0 1.0 1.0 0.0 
c 0.0 0.5 0.0 0.0 2.0 1.0 
d 0.0 0.0 0.0 0.0 4.0 0.0 
e NaN NaN NaN NaN 7.0 4.0 

Alte Antwort:
Ich nehme an, Sie die letzten beiden Zeilen bedeuten ...

können Sie pd.concat hier

pd.concat([df,df.iloc[-2,:] + df.iloc[-1:]]) 
verwenden

Ergebnis:

>>> pd.concat([df,df.iloc[-2,:] + df.iloc[-1:]]) 
    ab bc cd de ef fg 
a 0.0 0.5 1.0 0.0 0.0 3.0 
b 1.0 0.0 0.0 1.0 1.0 0.0 
c 0.0 0.5 0.0 0.0 2.0 1.0 
d 0.0 0.0 0.0 0.0 4.0 0.0 
d 0.0 0.5 0.0 0.0 6.0 1.0 
+0

Ich klärte (hoffentlich) meinen Punkt auf einen Kommentar über – Paauulus

+0

Danke für die Antwort! Es funktioniert perfekt – Paauulus

+0

@Paauulus: du bist sehr willkommen. Happy Coding für Sie. – bernie

0

Sie loc

df.loc['sum_c_d'] = df[-2:].sum() 


     ab bc cd de ef fg 
a  0 0.5 1 0 0 3 
b  1 0.0 0 1 1 0 
c  0 0.5 0 0 2 1 
d  0 0.0 0 0 4 0 
sum_c_d 0 0.5 0 0 6 1 
Verwandte Themen