2017-06-12 26 views
1

Ich habe gerade angefangen, Python zu lernen, also verzeih mir, wenn diese Frage woanders schon beantwortet wurde. Ich möchte eine neue Spalte mit dem Namen "Sum" erstellen, die einfach aus den vorherigen Spalten besteht.Summieren von Zeilen in Python Datareframe

Risk_Parity.tail() 

    VCIT VCLT PCY  RWR  IJR  XLU  EWL 
Date        
2017-01-31 21.704155 11.733716 9.588649 8.278629 5.061788 7.010918 7.951747 
2017-02-28 19.839319 10.748690 9.582891 7.548530 5.066478 7.453951 7.950232 
2017-03-31 19.986782 10.754507 9.593623 7.370828 5.024079 7.402774 7.654366 
2017-04-30 18.897307 11.102380 10.021139 9.666693 5.901137 7.398604 11.284331 
2017-05-31 63.962659 23.670240 46.018698 9.917160 15.234977 12.344524 20.405587 

Die Tabellenspalten sind ein wenig aus, aber alles, was ich brauche (21.70 + 11.73 ... + 7,95) ich nur so weit wie die Erstellung der Spalte Risk_Parity['sum'] = bekommen können, aber dann bin ich verloren.

Ich möchte lieber nicht Risk_Parity['sum] = Risk_Parity['VCIT'] + Risk_Parity['VCLT']...

Nach dem Erstellen der Summenspalte zu tun haben, ich jede Spalte durch die Summe Spalte geteilt werden soll und dass in einem neuen Datenrahmen zu machen, die nicht die Summe Spalte umfassen würde .

Wenn jemand helfen könnte, würde ich es sehr zu schätzen wissen. Bitte versuchen Sie Ihre Antworten so gering wie möglich zu halten lol.

Danke!

Tom

+0

Haben Sie 'Risk_Parity.sum (1)' ausprobiert? – Abdou

Antwort

2

Verwenden sum mit dem Parameter axis=1 angeben Summierung über Reihen

Risk_Parity['Sum'] = Risk_Parity.sum(1) 

Um eine neue Kopie von Risk_Parity ohne eine neue Spalte zu schreiben, um die ursprünglichen

Risk_Parity.assign(Sum= Risk_Parity.sum(1)) 
zu erstellen

Beachten Sie auch, dass ich die Spalte Sum und nicht sum benannt habe. Ich habe dies getan, um zu vermeiden, mit der gleichen Methode namens sum kollidieren ich verwendet, um die Spalte zu erstellen.


Um nur numerische Spalten ... aber sum weiß nicht-numerische Spalten sowieso zu überspringen.

RiskParity.assign(Sum=RiskParity.select_dtypes(['number']).sum(1)) 
# same as 
# RiskParity.assign(Sum=RiskParity.sum(1)) 

      VCIT VCLT PCY RWR IJR XLU EWL  Sum 
Date                
2017-01-31 21.70 11.73 9.59 8.28 5.06 7.01 7.95 71.33 
2017-02-28 19.84 10.75 9.58 7.55 5.07 7.45 7.95 68.19 
2017-03-31 19.99 10.75 9.59 7.37 5.02 7.40 7.65 67.79 
2017-04-30 18.90 11.10 10.02 9.67 5.90 7.40 11.28 74.27 
2017-05-31 63.96 23.67 46.02 9.92 15.23 12.34 20.41 191.55 
+0

wird dies wissen, nicht die Spalte "Date" oder irgendwelche möglichen Zeichen Spalten enthalten? Nur aus Interesse, ich bin nicht so vertraut mit Pandas. – patrick

+1

Die Spalte "Datum" ist keine Spalte, sie befindet sich im Index. Also ja. Was die Nicht-Charakter-Spalten angeht ... Ich werde meinen Beitrag aktualisieren. – piRSquared

0
l = ['VCIT' , VCLT' ,PCY' ... 'EWL'] 
Risk_Parity['sum'] = 0 
for item in l: 
    Risk_Parity['sum'] += Risk_Parity[item] 
Verwandte Themen