2016-03-22 6 views
1

Ich habe ein Pandas DataFrame, das durch monatliche Daten indiziert ist und 1 und 0 enthält.Gewichte in Panel-Daten - Pandas

Für jedes Datum (Zeile) möchte ich die Zeile summieren und dann jeden Datenpunkt durch diese Summe teilen, um Gewichte über die Zeit zu bestimmen (wenn der Datenpunkt Null ist, sollte er Null bleiben).

sieht Meine Daten wie folgt aus:

   A  B  C  D  
01-2001   0.33 0.33 0  0.33 
02-2001   0.5  0  0  0.5 
03-2001   0.5  0  0  0.5 
04-2001   0.25 0.25 0.25 0.25 
05-2001   0.33 0.33 0.33 0 

helfen Kann jemand:

   A  B  C  D  
01-2001   1  1  0  1 
02-2001   1  0  0  1 
03-2001   1  0  0  1 
04-2001   1  1  1  1 
05-2001   1  1  1  0 

Der Ausgang als solche sein sollte?

Danke!

Antwort

0

können Sie verwenden div mit sum:

print df.div(df.sum(axis=1), axis=0) 
       A   B   C   D 
01-2001 0.333333 0.333333 0.000000 0.333333 
02-2001 0.500000 0.000000 0.000000 0.500000 
03-2001 0.500000 0.000000 0.000000 0.500000 
04-2001 0.250000 0.250000 0.250000 0.250000 
05-2001 0.333333 0.333333 0.333333 0.000000 

Und wenn Sie round:

print df.div(df.sum(axis=1), axis=0).round(2) 
      A  B  C  D 
01-2001 0.33 0.33 0.00 0.33 
02-2001 0.50 0.00 0.00 0.50 
03-2001 0.50 0.00 0.00 0.50 
04-2001 0.25 0.25 0.25 0.25 
05-2001 0.33 0.33 0.33 0.00 
Verwandte Themen