2015-07-07 14 views
10

में कॉलम में अपरकेस को लागू करना मुझे अपने डेटाफ्रेम में कॉलम में ऊपरी केस लगाने में समस्या हो रही है।पांडा डेटाफ्रेम

डेटाफ्रेम df है।

1/2 ID कॉलम हेड है जिसे अपरकेस लागू करने की आवश्यकता है।

समस्या यह है कि मूल्य तीन अक्षरों और तीन संख्याओं से बना है। उदाहरण के लिए rrr123 मानों में से एक है।

df['1/2 ID'] = map(str.upper, df['1/2 ID']) 

मैं एक त्रुटि मिली:

TypeError: descriptor 'upper' requires a 'str' object but received a 'unicode' error.

मैं कैसे DataFrame df के कॉलम में पहले तीन अक्षरों को अपर केस लागू कर सकते हैं?

+0

str str वर्ग की एक विधि है और एक str नहीं यूनिकोड, 'str उम्मीद .upper (u "foo") -> त्रुटि' –

उत्तर

11

यह काम करना चाहिए:

df['1/2 ID'] = map(lambda x: x.upper(), df['1/2 ID']) 
+0

यह मुझे एक त्रुटि देता है - '' फ्लोट 'ऑब्जेक्ट में कोई विशेषता नहीं है' ऊपरी '' – Gil5Ryan

+0

आह ठीक है, तो आपके पास कुछ मान हैं जो तार भी नहीं हैं। 'X.upper()' से 'str (x) .upper()' या 'यूनिकोड (x) .upper()' बदलें। –

+0

आप आदमी हैं, str (x) .upper() काम किया! – Gil5Ryan

5

str.upper() एक सादे पुराने अजगर 2 स्ट्रिंग

unicode.upper() चाहता है एक यूनिकोड नहीं एक स्ट्रिंग चाहते हैं (या आप लेखन त्रुटि मिलती है: वर्णनकर्ता 'ऊपरी' एक 'यूनिकोड' की आवश्यकता है ऑब्जेक्ट लेकिन एक 'str' प्राप्त हुआ)

तो मैं बतख टाइपिंग का उपयोग करने का सुझाव देता हूं और अपने प्रत्येक तत्व पर .upper() पर कॉल करता हूं, उदाहरण के लिए

df['1/2 ID'].apply(lambda x: x.upper(), inplace=True) 
+0

आपकी मदद के लिए भी धन्यवाद! – Gil5Ryan

23

पांडा के अपने संस्करण के हाल के संस्करण तो तुम सिर्फ vectorised स्ट्रिंग विधि upper का उपयोग कर सकते है:

df['1/2 ID'].str.upper() 
+0

बढ़िया, यह जगह कैसे करें? ऊपरी() के लिए कोई विकल्प तर्क नहीं है? – iratzhash

+0

@iratzhash आप वापस 'डीएफ [' 1/2 आईडी '] = डीएफ [' 1/2 आईडी '] असाइन नहीं कर सकते हैं। Str.upper() ' – EdChum

+0

हां, मैंने इसे समझ लिया। मैंने सोचा कि यह कंप होगा। महंगा। मेरे कम्प्यूटेशनल संसाधनों के किनारे पर पहले से ही। – iratzhash

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