如果长度小于x,则更换字符串[英] replace string if length is less than x

本文是小编为大家收集整理的关于如果长度小于x,则更换字符串的处理方法,想解了如果长度小于x,则更换字符串的问题怎么解决?如果长度小于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)

我希望能够将文本('-s')添加到等于4个字符的任何内容中.我没有成功尝试以下.由于产生错误,ValueRorr:系列的真实价值是模棱两可的.使用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

推荐答案

我认为您需要loc,如果需要替换last 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 :

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

本文地址:https://www.itbaoku.cn/post/1727950.html