Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在数据帧中填充一列字符串_Python_String_Pandas_Dataframe_Replace - Fatal编程技术网

Python 在数据帧中填充一列字符串

Python 在数据帧中填充一列字符串,python,string,pandas,dataframe,replace,Python,String,Pandas,Dataframe,Replace,我有一个熊猫数据框,在这样的列中有字符串 id b 1 this is string1 1 this is string2 1 this is string3 1 this is string4 id b 1 shis is string1s 1 shis is string2s 1 shis is string3s 1 shis is string4s 现在我想从b列的每个单元格中删除第一个字符(t)。我还需要在该

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

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

 id   b
  1   this is string1
  1   this is string2
  1   this is string3
  1   this is string4
 id   b
  1   shis is string1s
  1   shis is string2s
  1   shis is string3s
  1   shis is string4s
我知道我可以遍历每一行并执行这些操作,但我想可能有一些有效的方法来实现这一点。也许我可以同时对b列的所有单元格应用相同的操作

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

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

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

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

谢谢,你能告诉我
s{}s
是什么意思吗?@asdfkjasdfjk将用
s
包围传递给
.format
的内容。示例:
's{}s'。格式('lol')
-->输出为
slols