python - 从数据框中提取字符串

标签 python regex pandas

from pandas import DataFrame,Series
import pandas as pd
df
text                                                 region
The Five College Region                           The Five College Region
South Hadley (Mount Holyoke College)              South Hadley
Waltham (Bentley University), (Brandeis Univer..) Waltham

该区域应从文本中提取。 如果该行包含“(”,则删除“(”后面的所有内容,然后删除空格。 如果该行不包含“(”,则保留它并复制到该区域。 我知道我可以用 str.extract 函数来处理它。但我在编写正确的正则表达式模式时遇到了麻烦

df['Region']  =df['text'].str.extract(r'(.+)\(.*')

此正则表达式模式无法提取第一个字符串 我也承认使用 split 函数可以解决这个问题

str.split('(')[0]

但我不知道如何将结果放入列中。 希望收到涵盖这两种方法的答案。

最佳答案

选项 1
分配 + str.split

df.text.str.split('\s*\(').str[0]

0    The Five College Region
1               South Hadley
2                    Waltham
Name: text, dtype: object
<小时/>
df.assign(region=df.text.str.split('\s*\(').str[0])

                                                text                   region
0                            The Five College Region  The Five College Region
1               South Hadley (Mount Holyoke College)             South Hadley
2  Waltham (Bentley University), (Brandeis Univer..)                  Waltham

选项 2
join + str.extract

df.text.str.extract('(?P<region>[^\(]+)\s*\(*', expand=False)

0    The Five College Region
1               South Hadley
2                    Waltham
Name: text, dtype: object
<小时/>
df.join(df.text.str.extract('(?P<region>[^\(]+)\s*\(*', expand=False))

                                                text                   region
0                            The Five College Region  The Five College Region
1               South Hadley (Mount Holyoke College)             South Hadley
2  Waltham (Bentley University), (Brandeis Univer..)                  Waltham

关于python - 从数据框中提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42523208/

相关文章:

python - 如何将标签添加到 pandas dataframe.to_html 链接,以便 url 的绝对路径不会显示在 html 中,而是显示在标签中?

Lua 中的 Python eval()

regex - 贪婪/懒惰(非贪婪)/占有量词如何在内部工作?

python - 在 SQLite 中获取(从另一个表)时插入行

r - 在r中提取两个彼此相邻的主题标签

c# - 正则表达式 "^[a-zA-Z]"或 "[^a-zA-Z]"

python - 用于改变 X 和 y 的 sklearn 管道的自定义转换器

python - 用之前的非缺失值填充缺失的 pandas 数据,按键分组

python - 计算tensorflow 2.0中每组的AUC

python - 使用 SQLAlchemy 指定 pyODBC 选项(特别是 fast_executemany = True)