gpt4 book ai didi

python - 在Python中的数据帧行中提取正则表达式匹配项,而不是组

转载 作者:行者123 更新时间:2023-12-01 01:00:55 25 4
gpt4 key购买 nike

我是编码新手,通常使用 R (stringr),但我也开始学习 Python 的语法。

我有一个数据框,其中有一列是从导入的 Excel 文件生成的。此列中的值包含大写和小写字符、符号和数字。

我想根据正则表达式模式在数据框中生成第二列,其中仅包含第一列中包含的一些单词。

df = pd.DataFrame(["THIS IS A TEST 123123. s.m.", "THIS IS A Test test 123 .s.c.e", "TESTING T'TEST 123 da."],columns=['Test'])

df

现在,要提取我想要的内容(大写的单词),在 R 中我通常会使用:

df <- str_extract_all(df$Test, "\\b[A-Z]{1,}\\b", simplify = FALSE)

提取不同数据框行中正则表达式的匹配项,分别是:

* THIS IS A TEST
* THIS IS A
* TESTING T TEST

我找不到类似的 Python 解决方案,最接近的解决方案如下:

df["Name"] = df["Test"].str.extract(r"(\b[A-Z]{1,}\b)", expand = True)

不幸的是,这不起作用,因为它仅导出正则表达式的而不是匹配。我尝试了多种策略,但 str.extractall 似乎也不起作用(“TypeError:插入列的索引与框架索引不兼容)

如何使用Python提取我想要的信息?

谢谢!

最佳答案

如果我理解得好,你可以尝试:

df["Name"] = df["Test"].str.extractall(r"(\b[A-Z]{1,}\b)")
.unstack().fillna('').apply(' '.join, 1)

[编辑]:这是我通过查看文档发现的较短版本:

 df["Name"] = df["Test"].str.extractall(r"(\b[A-Z]{1,}\b)").unstack(fill_value='').apply(' '.join, 1)

关于python - 在Python中的数据帧行中提取正则表达式匹配项,而不是组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55797875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com