Pandas RegEx extract第一个匹配子字符串,传递的项数错误

2024-10-01 02:36:39 发布

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

我试图从Pandas中的子字符串中提取特定字符来填充新列。每一行都有相似的格式,但还不够相似,无法对其进行切片。下面的每一行都是一列中的字符串:

   frog (1 column-string)
   _______________________________________________
1  OU812   2687BA   LM356   6342HK   BLAD   HA43S
2  OU635   GH3S5  3211CF SHN1   5875HK   BOOD   FR53G
3  OU525   3414MF   5385HK   ASD28   6338HK   OR53J

最后,我要隔离以HK结尾的第一个子串(忽略第一个子串)前面的三个数字,所以第1行是342,2是875,3是385。在

我的假设是,我需要提取以HK结尾的6个字符,然后将我需要的3个字符切掉(如果有人有关于如何跳过这一步的想法,那也太好了)。在

我的主要问题是,我使用的代码返回一个“传递的项目数错误”错误。在

^{pr2}$

我原以为?会阻止代码获取多个实例,但情况似乎并非如此。在


Tags: 字符串代码pandasstring格式错误结尾切片
1条回答
网友
1楼 · 发布于 2024-10-01 02:36:39

IIUC只有一列-frog

In [217]: df
Out[217]:
                                                frog
1     OU812   2687BA   LM356   6342HK   BLAD   HA43S
2  OU635   GH3S5  3211CF SHN1   5875HK   BOOD   F...
3   OU525   3414MF   5385HK   ASD28   6338HK   OR53J

In [218]: df['crunch'] = df['frog'].str.extract(r'\s+\d(\d+)HK\s+', expand=True)

In [219]: df
Out[219]:
                                                frog crunch
1     OU812   2687BA   LM356   6342HK   BLAD   HA43S    342
2  OU635   GH3S5  3211CF SHN1   5875HK   BOOD   F...    875
3   OU525   3414MF   5385HK   ASD28   6338HK   OR53J    385

Why your code didn't work?

您在正则表达式中指定了两个捕获组(在括号中):

^{pr2}$

您试图将这两列分配到一个列frog

相关问题 更多 >