Python在字符串中的特定位置替换字符串

2024-10-01 00:17:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想请求一些帮助

我有一个由多列组成的框架,在本例中,我只突出显示了三列,它们对我很重要

frame=pd.DataFrame({"String":["000111222f12","000121222f11","000131222f12","000141222f12"],"Cavity": ["Cav 2", "Cav 1", "Cav 1", "Cav 2"]})

   Cavity     String  
0  Cav 2  011121222f12              
1  Cav 1  011111222f14              
2  Cav 2  011111222f16              
3  Cav 2  000111222f17   

我想得到的是:基于腔列,我需要更改字符串的4.location(计数为零),这意味着如果我有Cav 2,我应该有011121222f16

理想的解决方案应该是这样的

   Cavity     String      Corrected String
0  Cav 2  011121222f12    011121222f12            
1  Cav 1  011111222f14    011111222f14            
2  Cav 2  011111222f16    011121222f16            
3  Cav 2  000111222f17    000121222f17 

我尝试在特定位置替换和切片字符串,并使用np.where来解决这个问题,但没有成功

有什么建议吗

干杯,谢谢


Tags: 字符串框架dataframestring切片location解决方案frame
2条回答

您可以从Cavity列中提取整数,并在4.position之后添加:

s = frame['Cavity'].str.extract('(\d+)', expand=False)
frame['Corrected'] = frame['String'].str[:4] + s + frame['String'].str[5:]
print (frame)
         String Cavity     Corrected
0  000111222f12  Cav 2  000121222f12
1  000121222f11  Cav 1  000111222f11
2  000131222f12  Cav 1  000111222f12
3  000141222f12  Cav 2  000121222f12

试试这个:

frame['Corrected String'] = frame['String'].str[:4] + frame['Cavity'].str.split().str[-1] + frame['String'].str[5:]

相关问题 更多 >