我有下面的数据集,我需要提取9数字ID从“注解”列。下面的一些代码我尝试了,但有时我没有得到正确的输出。有时有几个数字之间的空格,或一个符号,或有时有不是ID等的一部分数值。任何想法如何做到这一点更有效?
DF['Output'] = DF['Notes'].str.replace(' '+' '+' '+'-', '')
DF['Output'] = DF['Notes'].str.replace(' '+' '+'-', '')
DF['Output'] = DF['Notes'].str.replace(' '+'-', '')
DF['Output'] = DF['Notes'].str.replace('-', '')
DF['Output'] = DF['Notes'].str.replace('\D', ' ')
DF['Output'] = DF['Notes'].str.findall(r'(\d{9,})').apply(', '.join)
| 备注|预期输出|
| - -|- -|
| 约325% xyz|第0页|
| 九号|小行星123456789|
| 第234567 891号|二34567891|
| 英国海军标准567 891 524; 123有限公司|小行星567891524|
| 2.5%锰钾钙,含量为3234 56 78 9; TGH 1235 z型|小行星323456789|
| 故障诊断功能956 327-12 8典型|小行星956327128|
| X Y Z 1.59% 2345 567 81;一个35英寸|小行星23455678|
| VTO 126%,12345 67|第0页|
| 1234农行3456 1 2 4 91|小行星34561|
2条答案
按热度按时间8yparm6h1#
第一个
mftmpeh82#
首先使用
str.replace
去掉空格和破折号,然后使用str.extract
查找9位数,我们可以尝试:为了解释正则表达式模式,我们在
\d{9}
周围放置了非数字边界标记,以确保我们 * 只 * 匹配9位数字。(?<!\d)
确保前面的是非数字或列的开头(\d{9})
匹配并准确捕获9位数字(?!\d)
确保后面是非数字或列结尾