我有一个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