Python dataframe regex创建新列从文本

2024-04-29 17:19:30 发布

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

我有一个数据帧,其中一列包含一堆随机文本。在随机文本中,每行有一个名称。我想在dataframe中创建一个新列,它只是名称。所有这些名字都以大写字母开头,前面加上“Meet”“name is”“hello to”等短语。我认为我应该使用正则表达式,但不确定是否超出了这个范围。你知道吗

数据帧单元格中的文本示例: “这是约翰。他是在澳大利亚巡回演出的摇滚明星 “见见兰迪。他可能有地球上最好的发型。”(理想的名字是兰迪) “向迈克问好!他的小胡子在县集市上得了一等奖

我认为代码应该是这样的: df['name'][df['text']。结构提取物('r'\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu


Tags: to数据name文本名称地球示例hello
1条回答
网友
1楼 · 发布于 2024-04-29 17:19:30

首先得到正则表达式模式。我看到你的模式的逻辑是:

  1. 每个名字都以大写字母开头,

  2. 名称前有空格

  3. “开始”的名称后面有一个字符(感叹号或句号),

  4. 在名称后面有一个空格,否则连地球都会被计算在内,这是我们不想要的

下面的正则表达式是:

re1='(\\s+)'                    # White Space 1
re2='((?:[A-ZÀ-ÿ][a-zÀ-ÿ]+))'   # Word 1
re3='([.!,?\\-])'               # Any Single Character 1
re4='(\\s+)'                    # White Space 2

我使用这个网站来获取我的正则表达式:https://txt2re.com/

现在做:

df['name'] = df['text'].str.extract(re1+re2+re3+re4, expand=True)[1]

输出:

0     John
1    Randy
2     Mike
3   Amélie
Name: name, dtype: object

相关问题 更多 >