使用 Python 映射字母数字字符串

2024-07-01

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

Name            Subname
9-AIF-09        9A09
980-PD-Z09A     980P09
15-KIC-12       15K12
PIA-110H        P-110
IC009A          I009A

可以定义规则,例如,如果名称中存在“A”,则保留所有数字和字母“A”,名称中存在“P”,则仅保留“P”。 算法本身必须识别关于如何完成映射的模式。

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


我看到两个选择。

获取 3 组(第一个字母之前、第一个字母之前、第一个字母之后)并删除第 1 组和第 3 组中的所有非数字:

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)

或者,定义一个模式:非数字/数字/非数字/字母/非数字/数字/非数字:

df['Subname'] = (df['Name'].str.extract(r'\D*(\d+)[^\da-zA-Z]*([a-zA-Z])\D*(\d+)')
                           .agg(''.join, axis=1)
                 )

output

          Name Subname
0     9-AIF-09    9A09
1  980-PD-Z09A  980P09
2    15-KIC-12   15K12
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python 映射字母数字字符串 的相关文章

随机推荐