我有一个pandas数据框,在这样的列中有字符串

 id   b
  1   this is string1
  1   this is string2
  1   this is string3
  1   this is string4

现在我要从b列的每个单元格中删除第一个字符(t)。我还需要在该列的开头和结尾添加一个字符s。所以输出应该是这样的
 id   b
  1   shis is string1s
  1   shis is string2s
  1   shis is string3s
  1   shis is string4s

我知道我可以遍历每一行并执行这些操作,但我想可能有一些有效的方法来实现这一点。也许我可以同时对b列的所有细胞做同样的手术?

最佳答案

df.apply更简洁灵活的方法:

df.b = df.b.str[1:].apply('s{}s'.format)
print(df)

   id                 b
0   1  shis is string1s
1   1  shis is string2s
2   1  shis is string3s
3   1  shis is string4s

而且,要替换第一次出现的t,请使用pd.Series.str.replace
df.b = df.b.str.replace('t', '', 1).apply('s{}s'.format)
print(df)

   id                 b
0   1  shis is string1s
1   1  shis is string2s
2   1  shis is string3s
3   1  shis is string4s

09-20 18:23