2016-07-14 22 views
1

Hier Tabelle:Spalte hinzufügen von vorherigen Spalten Werte in Pandas

6 30 98 298 588 1598 
36 2.0 NaN NaN NaN NaN NaN 
50 1.0 NaN NaN NaN NaN NaN 

Hier ist meine schmutzige Art und Weise neue ‚total‘ Spalte hinzuzufügen:

df_cz['total'] = df_cz[6] *6 + df_cz[30] *30 + df_cz[98] *98 + ... 

Gibt es eine bessere Art und Weise zu berechnen ' Gesamtwerte basieren auf dem Tabellenkopfwert und den einzelnen Zeilenwerten.

+1

diese Spaltennamen (6, 30, 98 etc.)? – ayhan

+0

Wenn 'NaN' vorhanden ist, dann ist natürlich" NaN ". – shivsn

+0

@shivsn, ich benutze 'fillna' bevor neue Spalte hinzufügen (oben nicht erwähnt) – xhan

Antwort

1

Sie können mul mit Spaltennamen verwenden umgewandelt to_series mit sum:

print (df_cz) 
    6 30 98 298 588 1598 
0 36 2.0 NaN NaN NaN NaN 
1 50 1.0 NaN NaN NaN NaN 

df_cz['total'] = df_cz.mul(df_cz.columns.to_series()).sum(axis=1) 
print (df_cz) 
    6 30 98 298 588 1598 total 
0 36 2.0 NaN NaN NaN NaN 276.0 
1 50 1.0 NaN NaN NaN NaN 330.0 
+0

danke. und diese Lösung kann 'NaN'-Werte verarbeiten. – xhan