基于关键字的pandas文本抽取

2024-09-28 03:21:49 发布

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

我有一个包含两列的数据集:

Index            Text
 1               *some text* address13/b srs mall, indirapuram,sann-444000 *some text*
 2               *some text*   
 3               *some text* contactus 12J 1st floor, jajan,totl-996633 *some text*
 4               ..........
 5               ........

我想要一个数据帧,它有一个新的列作为“位置”,其中只有字符串将从列“文本”中提取,该列超出关键字“address”或“contactus”,直到6位数字,并给出“NA”,其中字符串不匹配。输出我想要的是:

^{pr2}$

Tags: 数据字符串textindexsomesrsfloortotl
1条回答
网友
1楼 · 发布于 2024-09-28 03:21:49

使用str.extract

df['location'] = df.Text.str.extract('(?:address|contactus)(.*?\d{6})', expand=False)
df.drop('Text', 1)

   Index                                location
0      1  13/b srs mall, indirapuram,sann-444000
1      2                                     NaN
2      3        12J 1st floor, jajan,totl-996633

顺便说一句,当您有多个项目要检查时,请将它们放在一个列表中,并用str.join将它们连接起来:

^{pr2}$

正则表达式详细信息

(?:        # non-capturing group
address    # "address" 
|          # regex OR
contactus  # "contactus
)  
(.*?       # non-greedy match-all
\d{6}      # 6 digit zipcode
)

相关问题 更多 >

    热门问题