首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python映射AlphaNumeric字符串

使用Python映射AlphaNumeric字符串
EN

Stack Overflow用户
提问于 2022-03-27 06:17:40
回答 1查看 167关注 0票数 2

我有一个名字数据集。基于名称的字母数字字符串,我需要将它们映射到子名称,如下所示。

代码语言:javascript
复制
Name            Subname
9-AIF-09        9A09
980-PD-Z09A     980P09
15-KIC-12       15K12
PIA-110H        P-110
IC009A          I009A

可以定义这样的规则,例如,如果“A”在名称中,然后保留所有的数字和字母表'A','P‘在名称中,那么只有'P’才会继续。模式必须由算法本身来识别映射是如何完成的。

是否有任何算法可用于从训练数据集中识别模式以进一步预测。

EN

回答 1

Stack Overflow用户

发布于 2022-03-27 17:31:45

我有两种选择。

得到三个组(在第一个字母之前、第一个字母之前、第一个字母之后),并删除第一组和第三组中的所有非数字:

代码语言:javascript
复制
import re
df['Subname'] = df['Name'].str.replace(r'([^a-zA-Z]+)([a-zA-Z])(.*)',
                                       lambda m: (re.sub('\D', '', m.group(1))
                                                  +m.group(2)
                                                  +re.sub('\D', '', m.group(3))),
                                      regex=True)

或者,定义一个模式: non-digits/digits/non-digits/letter/non-digits/digits/non-digits:

代码语言:javascript
复制
df['Subname'] = (df['Name'].str.extract(r'\D*(\d+)[^\da-zA-Z]*([a-zA-Z])\D*(\d+)')
                           .agg(''.join, axis=1)
                 )

输出

代码语言:javascript
复制
          Name Subname
0     9-AIF-09    9A09
1  980-PD-Z09A  980P09
2    15-KIC-12   15K12
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71634131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档