2012-12-18 81 views
11

我是熊貓數據框的新手,我想對每列應用一個函數,以便計算每個元素的x,x/max列。在熊貓數據框上應用函數

我引用了這個問題,但無法訪問每列的最大值。在此先感謝 Pandas DataFrame: apply function to all columns

輸入:

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

輸出:

 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

「0.888 ..」就足夠了嗎,還是真的需要「8/9」分數? – DSM

+0

哦,是的,0.888會很棒。它旨在顯示操作。對困惑感到抱歉。 – msunbot

回答

13

像這樣的東西應該工作:

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

請注意,我用1.0乘以df使其不包括的int s(.astype(float)也可以),以避免整數除法和結果數據幀充滿0和1。