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