पांडस डेटाफ्रेम के कॉलम में टेक्स्ट को कैसे बदलें?


102

मेरे पास इस तरह मेरे डेटाफ़्रेम में एक कॉलम है:

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

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

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

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

जवाबों:


210

सदिश 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)

से डॉक्स हम इस desc देखें:

str या regex: str: string से बिलकुल मेल खाते हुए to_replace को मूल्य के साथ बदल दिया जाएगा

इसलिए क्योंकि स्ट्रैस वैल्यू मैच नहीं करती है, कोई रिप्लेसमेंट नहीं होता है, निम्नलिखित के साथ तुलना करें:

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

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


39

Google खोज से यहां पहुंचने वाले किसी अन्य व्यक्ति के लिए सभी स्तंभों पर एक स्ट्रिंग प्रतिस्थापन कैसे करें (उदाहरण के लिए, यदि किसी के पास ओपी के 'रेंज' कॉलम की तरह कई कॉलम हैं): पंडों के पास replaceएक डेटाफ़्रेम ऑब्जेक्ट पर उपलब्ध विधि में बनाया गया है ।

df.replace(',', '-', regex=True)

स्रोत: डॉक्स


2

कॉलम नामों में सभी कॉमा को अंडरस्कोर से बदलें

data.columns= data.columns.str.replace(' ','_',regex=True)

2

इसके अलावा, एक स्तंभ में एक से अधिक वर्णों को बदलने की तलाश करने वालों के लिए, आप इसे नियमित अभिव्यक्तियों का उपयोग करके कर सकते हैं:

import re
chars_to_remove = ['.', '-', '(', ')', '']
regular_expression = '[' + re.escape (''. join (chars_to_remove)) + ']'

df['string_col'].str.replace(regular_expression, '', regex=True)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.