2012-12-18 29 views
11

पर फ़ंक्शन लागू करें मैं पांडा डेटाफ्रेम के लिए नौसिखिया हूं, और मैं प्रत्येक कॉलम में एक फ़ंक्शन लागू करना चाहता था ताकि यह प्रत्येक तत्व x, x/अधिकतम कॉलम के लिए गणना करे।पांडस डेटाफ्रेम

मैंने इस प्रश्न का संदर्भ दिया, लेकिन मुझे प्रत्येक कॉलम का अधिकतम उपयोग करने में परेशानी हो रही है। अग्रिम धन्यवाद 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 एस और अब (.astype(float) भी काम किया होगा) और परिणामी डेटाफ्रेम 0s और 1s से भरा हुआ है।

संबंधित मुद्दे