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.replace与lambda和一起使用的一种方法n:
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