2012-12-18 54 views
11

Ben pandas dataframe için yeni bir kullanıcıyım ve her bir sütun x, max/elementinin her bir elemanı için hesaplayabilmesi için her sütuna bir fonksiyon uygulamak istedim.Pandalar dataframe fonksiyonunu uygulayın

Bu soruya başvurdum, ancak her bir sütunun maksimumuna erişmede sorun yaşıyorum. Şimdiden teşekkürler Pandas DataFrame: apply function to all columns

Girdi:

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

Çıktı:

böyle
 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 .." yeterli mi, yoksa gerçekten 8/9'luk kesime mi ihtiyacınız var? – DSM

+0

Oh evet, 0.888 harika olurdu. Operasyonu göstermesi amaçlandı. Karışıklık için özür dilerim. – msunbot

cevap

13

şey çalışması gerekir: Ben o kadar 1.0 tarafından df çarpılır

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

Not oluşmadı int s artık (.astype(float) da işe yarayacak) tamsayı bölme ve sonuçta 0s ve 1s ile sonuçlanan bir DataFrame önlemek için.