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/