2017-11-26 2 views
0

mit habe ich einen DatenrahmenNormalisieren Daten auf Mehrindextabelle Pandas

 O D counts 
0 G1 G1 8576 
1 G1 G2 4213 
2 G1 G3 8762 
3 G2 G1 8476 
4 G2 G2 2134 
... 

Aber jede der Gruppen haben unterschiedliche Populationen in O und D. So zum Beispiel:

G1 in O hat, sagen , 1234 verschiedene Mitglieder, während G1 in D 4321 hat.

Wie normalisiere ich die obige Tabelle mit pandas?

Antwort

1

Es scheint, müssen Sie zuerst neu zu gestalten und dann normalize:

df = df.set_index(['O','D'])['counts'].unstack(fill_value=0) 
print (df) 
D  G1 G2 G3 
O     
G1 8576 4213 8762 
G2 8476 2134  0 

df1 = (df - df.mean())/(df.max() - df.min()) 
print (df1) 
D G1 G2 G3 
O     
G1 0.5 0.5 0.5 
G2 -0.5 -0.5 -0.5 

Und last reshape zurück:

print (df1.stack().reset_index(name='count')) 

    O D count 
0 G1 G1 0.5 
1 G1 G2 0.5 
2 G1 G3 0.5 
3 G2 G1 -0.5 
4 G2 G2 -0.5 
5 G2 G3 -0.5 
Verwandte Themen