在pandas数据框中填充一列字符串

时间:2017-08-26 08:29:15

标签: python string pandas dataframe replace

我有一个像这样的

列中的字符串的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列的所有单元格应用相同的操作?

3 个答案:

答案 0 :(得分:4)

使用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

答案 1 :(得分:3)

In [6]: df.b = 's' + df.b.str[1:] + 's'

In [7]: df
Out[7]:
   id                 b
0   1  shis is string1s
1   1  shis is string2s
2   1  shis is string3s
3   1  shis is string4s

如果您要替换首次出现t

In [14]: df
Out[14]:
   id              b
0   1           test
1   2         a test
2   3  no occurences

In [15]: df.b = df.b.str.replace('t', '-', n=1)

In [16]: df
Out[16]:
   id              b
0   1           -est
1   2         a -est
2   3  no occurences

答案 2 :(得分:0)

您可以像这样替换第一个和最后一个字符:

df['b'] = df.b.str.replace('^.|$', 's')