2015-03-11 5 views
13

मैं इस तरह मेरी dataframe में एक स्तंभ है:पायथन पांडस: डेटाफ्रेम के कॉलम में वर्णों को कैसे प्रतिस्थापित करें?

range 
(2,30) 
(50,290) 
(400,1000) 
... 

और मैं ',' साथ अल्पविराम बदलना चाहते हैं '-' पानी का छींटा। मैं वर्तमान में इस विधि का उपयोग कर रहा हूं लेकिन कुछ भी नहीं बदला गया है।

org_info_exc['range'].replace(',','-',inplace=True) 

क्या कोई मदद कर सकता है?

उत्तर

35

उपयोग vectorised str विधि replace:

In [30]: 

df['range'] = df['range'].str.replace(',','-') 
df 
Out[30]: 
     range 
0 (2-30) 
1 (50-290) 

संपादित

तो अगर हम तुम क्या करने की कोशिश की पर देखने और क्यों यह काम नहीं किया:

df['range'].replace(',','-',inplace=True) 
से

docs हम यह desc देखते हैं:

str या regex: str: स्ट्रिंग वास्तव में मिलान to_replace मूल्य के साथ बदल दिया जाएगा

तो क्योंकि str मान मेल नहीं खाते, कोई प्रतिस्थापन होती है, तो निम्न के साथ तुलना करें:

In [43]: 

df = pd.DataFrame({'range':['(2,30)',',']}) 
df['range'].replace(',','-', inplace=True) 
df['range'] 
Out[43]: 
0 (2,30) 
1   - 
Name: range, dtype: object 

यहां हमें दूसरी पंक्ति पर सटीक मिलान मिलता है और प्रतिस्थापन होता है।

+0

@EdChum हाँ, यह बहुत अच्छा होगा मैं उत्सुक हूँ! क्या ऐसा इसलिए है क्योंकि यह एक स्ट्रिंग प्रतिस्थापन है? – UserYmY

+0

डाउनवॉटर देखभाल – EdChum

+0

समझाओ क्या इनस्थल एपीआई की चतुरता से मेल खाने का कोई तरीका है? (यदि डेटाफ्रेम या कॉलम नाम लंबे हैं तो अच्छा हो सकता है) – maxymoo

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