2016-11-28 18 views
7

में अधिकतम मान सेट करें मैं एक पांडा डेटाफ्रेम कॉलम का अधिकतम मान सेट करने का प्रयास कर रहा हूं। उदाहरण के लिए:पांडस डेटाफ्रेम: कॉलम

my_dict = {'a':[10,12,15,17,19,20]} 
df = pd.DataFrame(my_dict) 

df['a'].set_max(15) 

प्राप्त होते हैं:

a 
0 10 
1 12 
2 15 
3 15 
4 15 
5 15 

लेकिन ऐसा नहीं है।

हैं करने के लिए एक लाख समाधान खोजने अधिकतम मूल्य है, लेकिन लिए कुछ भी नहीं अधिकतम मान सेट ... कम से कम है कि मैं पा सकते हैं।

मैं सूची के माध्यम से पुन: प्रयास कर सकता हूं, लेकिन मुझे संदेह है कि पांडा के साथ ऐसा करने का एक तेज़ तरीका है। मेरी सूचियां काफी लंबी होंगी और इस प्रकार मैं अपेक्षा करता हूं कि पुनरावृत्ति अपेक्षाकृत अधिक समय ले ले। साथ ही, मैं चाहता हूं कि जो भी समाधान NaN को संभालने में सक्षम हो।

अग्रिम धन्यवाद।

+0

'clip' विधि पर एक नजर डालें। –

उत्तर

9

मुझे लगता है कि आप कर सकते हैं:

maxVal = 15 
df['a'].where(df['a'] <= maxVal, maxVal)  # where replace values with other when the 
               # condition is not satisfied 

#0 10 
#1 12 
#2 15 
#3 15 
#4 15 
#5 15 
#Name: a, dtype: int64 

या:

df['a'][df['a'] >= maxVal] = maxVal 
+1

यही वह है। पता था कि कुछ आसान था जो मैं लापता था। धन्यवाद Psidom। – pshep123

3

आप clip उपयोग कर सकते हैं।

डेटा फ्रेम के सभी स्तंभों पर लागू करें:

df.clip(upper=15) 

अन्यथा देखा here के रूप में चयनित कॉलम पर लागू:

df.clip(upper=pd.Series({'a': 15}), axis=1) 
संबंधित मुद्दे