2013-06-17 8 views
34

में स्ट्रिंग/मान को प्रतिस्थापित करें मेरे पास एक बहुत बड़ा डेटासेट है जो मैं संख्याओं के साथ तारों को प्रतिस्थापित करना चाहता हूं। मैं डेटासेट में प्रत्येक कुंजी (कॉलम) के लिए मैपिंग फ़ंक्शन टाइप किए बिना डेटासेट पर काम करना चाहता हूं। (fillna विधि के समान, लेकिन विशिष्ट स्ट्रिंग को assosiated मान के साथ प्रतिस्थापित करें)। क्या ऐसा करने के लिए वैसे भी है?पूरे डेटाफ्रेम

data 
    resp A B C 
0  1 3 3 4 
1  2 4 3 4 
2  3 5 5 5 
3  4 2 3 2 
4  5 1 1 1 
5  6 3 4 1 
6  7 4 4 4 
7  8 5 5 5 
8  9 2 2 1 
9 10 1 1 1 

बहुत बुरा = 1, बुरा = 2, गरीब = 3, अच्छा = 4, बहुत अच्छा = 5:

यहाँ मेरी डाटासेट

data 
    resp   A   B   C 
0  1  poor  poor  good 
1  2  good  poor  good 
2  3 very good very good very good 
3  4  bad  poor  bad 
4  5 very bad very bad very bad 
5  6  poor  good very bad 
6  7  good  good  good 
7  8 very good very good very good 
8  9  bad  bad very bad 
9 10 very bad very bad very bad 

वांछित परिणाम का एक उदाहरण है

// जोनास

उत्तर

53

उपयोग replace

In [126]: df.replace(['very bad', 'bad', 'poor', 'good', 'very good'], 
        [1, 2, 3, 4, 5]) 
Out[126]: 
     resp A B C 
    0  1 3 3 4 
    1  2 4 3 4 
    2  3 5 5 5 
    3  4 2 3 2 
    4  5 1 1 1 
    5  6 3 4 1 
    6  7 4 4 4 
    7  8 5 5 5 
    8  9 2 2 1 
    9 10 1 1 1 
+0

यह 0.20.1 में काम नहीं कर रहा है। नए वाक्यविन्यास के लिए http://pandas.pydata.org/pandas-docs/version/0.20/generated/pandas.DataFrame.replace.html?highlight=replace# देखें। –

+1

एक मामूली बदलाव के साथ df.replace (['बहुत बुरा', 'बुरा', 'खराब', 'अच्छा', 'बहुत अच्छा'], [1, 2, 3, 4, 5] काम करना चाहिए , जगह = सही) –

4

को ध्यान में रखते data है अपने pandas DataFrame आप भी उपयोग कर सकते हैं:

data.replace({'very bad': 1, 'bad': 2, 'poor': 3, 'good': 4, 'very good': 5}, inplace=True)