2012-12-18 21 views
11

Sono un novizio di dataframe panda e volevo applicare una funzione a ciascuna colonna in modo che calcolasse per ogni elemento x, x/max di colonna.Applicare la funzione su Pandora dataframe

Ho fatto riferimento a questa domanda, ma ho problemi ad accedere al massimo di ogni colonna. Grazie in anticipo Pandas DataFrame: apply function to all columns

ingresso:

 A B C D 
    0 8 3 5 8 
    1 9 4 0 4 
    2 5 4 3 8 
    3 4 8 5 1 

uscita:

 A  B  C D 
    0 8/9 3/8 5/5 8/8 
    1 9/9 4/8 0/5 4/8 
    2 5/9 4/8 3/5 8/8 
    3 4/9 8/8 5/5 1/8 
+0

Sarebbe "0.888 .." sufficiente, o hai davvero bisogno della frazione '8/9'? – DSM

+0

Oh sì, 0.888 sarebbe fantastico. Era destinato a mostrare l'operazione. Dispiace per la confusione. – msunbot

risposta

13

Qualcosa del genere dovrebbe funzionare:

>>> from pandas import DataFrame 
>>> 
>>> df = DataFrame({"A": [8,9,5,4], "B": [3,4,4,8], "C": [5,0,3,5], "D": [8,4,8,1]}) 
>>> df.max() 
A 9 
B 8 
C 5 
D 8 
>>> (df * 1.0)/df.max() 
      A  B C  D 
0 0.888889 0.375 1.0 1.000 
1 1.000000 0.500 0.0 0.500 
2 0.555556 0.500 0.6 1.000 
3 0.444444 1.000 1.0 0.125 

Si noti che ho moltiplicato df da 1.0 in modo che non consisteva dis (anche .astype(float) avrebbe funzionato) per evitare la divisione integer e un DataFrame risultante pieno di 0 e 1.

Problemi correlati