【问题标题】:replace string if length is less than x如果长度小于 x,则替换字符串
【发布时间】:2017-06-27 15:51:54
【问题描述】:

我在下面有一个数据框。

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 个字符的任何内容。我没有成功尝试以下。当它产生错误时,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

【问题讨论】:

    标签: python string pandas replace conditional-statements


    【解决方案1】:

    我认为您需要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
    

    【讨论】:

      猜你喜欢
      • 2019-10-01
      • 2015-06-17
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多