python - Pandas:如何用另一个值替换 int 子字符串

我想将字符串中的第一个整数减 1

我有以下数据框:

No              pl.     Expected              
B2bb-hb        0.56     0.35      
F378cq-h1      0.21     0.62   
W30mm2-fpr2    8.17     0.76    
Z51mm1-yu2     2.81     0.91     

我希望输出是:

No              pl.     Expected              
B1bb-hb        0.56     0.35      
F377cq-h1      0.21     0.62   
W29mm2-fpr2    8.17     0.76    
Z50mm1-yu2     2.81     0.91  

我尝试了以下代码:

df['No'] = df['No'].str.replace('(\d+)','(\d+)-int(1)')

但我最终得到了:

No                       pl.     Expected              
B(\d+)-int(1)b-h         0.56     0.35      
F(\d+)-int(1)cq-h1       0.21     0.62   
W(\d+)-int(1)mm2-fpr2    8.17     0.76    
Z(\d+)-int(1)mm1-yu2     2.81     0.91  

请问我该如何编辑代码?

提前致谢!

最佳答案

pandas.Series.str.replacelambdan 一起使用的一种方法:

df["No"].str.replace("(\d+)", lambda x: str(int(x.group(1))-1), n=1)

输出:

0        B1bb-hb
1      F377cq-h1
2    W29mm2-fpr2
3     Z50mm1-yu2
Name: No, dtype: object

https://stackoverflow.com/questions/65556735/

相关文章:

reactjs - firebase safari 错误消息 : This browser does

java - 更正应包含单个兼容版本的应用程序的类路径

c - STM32创建RAM段

scala - 基于Map从List[String]转换为List[Int]

c++ - 找不到 Glog(缺少 : GLOG_INCLUDE_DIR GLOG_LIBRARY)

java - 在 Clojure 中使用 JSoup 解析字符串

r - 无法为 R 中的列表替换 NA 的拼写错误

python - numpy 中的 3d 矩阵乘法

c# - 有没有办法在 Switch 表达式中跳过或继续,或者每个分支都需要返回一些东西?

hash - 如何从 elixir 中的 map 创建 `hash` 或 `md5`?