使用python通过regex解析DataFrame中的文本

w51jfk4q  于 2023-04-07  发布在  Python
关注(0)|答案(2)|浏览(97)

我将把我的问题作为一个简化的例子来表示。
我有一个pandas DataFrame,我想创建一个新列,其内容来自现有列,称之为“columnA”,其值是长文本字符串。
假设df[“columnA”]中的值是“Hello world the sky is blue and the grass is绿色”
我希望新列仅包含columnA中以“T”或“G”开头的单词
因此,新列中的相应值为:“绿色”
(in我的真实的例子,一切都是大写)
我尝试过以不同的方式使用findall()和列表解析,我能够返回第一次出现的结果,但很难有效地获取所有出现的结果。

8yparm6h

8yparm6h1#

pandas.Series.str.findall调用中使用以下正则表达式模式\b([tg]\w+)\b

import re

df['new_col'] = df['columnA'].str.findall(r'\b[tg]\w+\b', 
                                          flags=re.IGNORECASE).str.join(' ')
columnA              new_col
0  Hello world the sky is blue and the grass is g...  the the grass green
kcwpcxri

kcwpcxri2#

df.columnA.str.findall(r'\b[tbTB]\w+').str.join(' ')

这段代码对Pandas DataFrame df中名为columnA的列中的值执行字符串操作。具体来说,它会查找所有出现的以't '、' b '、' T '或'B'开头并后跟一个或多个单词或数字(包括连字符)的单词
fillall函数返回一个列表,这就是为什么我使用.str.join(““)方法将列表转换为字符串。

相关问题