2012-12-18 11 views
11

Jestem początkującym użytkownikiem pandasowej frameworki danych i chciałem zastosować funkcję do każdej kolumny tak, aby była obliczana dla każdego elementu x, x/maks. Kolumny.Zastosuj funkcję na pandasowej ramce danych

Odniosłem się do tego pytania, ale mam problem z uzyskaniem dostępu do maksimum każdej kolumny. Dzięki z góry Pandas DataFrame: apply function to all columns

Wejście:

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

wyjściowa:

 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

Czy "0.888 .." wystarczałoby, czy naprawdę potrzebujesz frakcji '8/9'? – DSM

+0

O tak, 0.888 byłoby świetnie. Miało to pokazać operację. Przepraszam za zamieszanie. – msunbot

Odpowiedz

13

Coś jak to powinno działać:

>>> 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 

pamiętać, że mnoży df przez 1.0 tak, że nie składa się z int s już (.astype(float) też by działało), aby uniknąć dzielenia liczb całkowitych i wynikowego DataFrame pełnego 0s i 1s.

Powiązane problemy