2017-02-09 9 views
5

से कम है, तो मेरे पास डेटाफ़्रेम है।स्ट्रिंग को प्रतिस्थापित करें यदि लंबाई x

a = {'Id': ['ants', 'bees', 'cows', 'snakes', 'horses'], '2nd Attempts': [10, 12, 15, 14, 0], 
    '3rd Attempts': [10, 10, 9, 11, 10]} 
a = pd.DataFrame(a) 
print (a) 

मैं 4 अक्षरों के बराबर कुछ भी पाठ ('-s') जोड़ने में सक्षम होना चाहता हूं। मैंने असफल तरीके से नीचे की कोशिश की है। क्योंकि यह त्रुटि उत्पन्न करता है, ValueError: श्रृंखला का सत्य मूल्य संदिग्ध है। A.empty, a.bool(), a.item(), a.any() या a.all() का उपयोग करें।

if a['Id'].str.len() == 3: 
    a['Id'] = a['Id'].str.replace('s', '-s') 
else: 
    pass 

उत्तर

5

मैं तुम्हें loc की जरूरत है, अगर पिछले की जगह की जरूरत है s है आवश्यक ऐड $:

mask = a['Id'].str.len() == 4 
a.loc[mask, 'Id'] = a.loc[mask, 'Id'].str.replace('s$', '-s') 
print (a) 
    2nd Attempts 3rd Attempts  Id 
0   10   10 ant-s 
1   12   10 bee-s 
2   15    9 cow-s 
3   14   11 snakes 
4    0   10 horses 

mask साथ समाधान:

mask = a['Id'].str.len() == 4 
a.Id = a.Id.mask(mask, a.Id.str.replace('s$', '-s')) 
print (a) 
    2nd Attempts 3rd Attempts  Id 
0   10   10 ant-s 
1   12   10 bee-s 
2   15    9 cow-s 
3   14   11 snakes 
4    0   10 horses 
संबंधित मुद्दे