I have a dataframe below.
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)
I want to able add text ('-s') to anything which is equal to 4 characters. i have unsuccessfully tried the below. as it produces the error, ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
if a['Id'].str.len() == 3:
a['Id'] = a['Id'].str.replace('s', '-s')
else:
pass
I think you need loc
, if need replace last s
is necessary add $
:
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
Solution with 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With