使用 PANDAS 在数据框列中查找多个完全匹配的字符串
Finding multiple exact string matches in a dataframe column using PANDAS
我有 100 万个条目数据集,其中包含人类输入的观察结果,以指示某些 'operational' 结果。尝试创建一些类别时,我需要查看此专栏并准确提取某些内容!最常用的表达方式。它们可以出现在字符串的开头、结尾或中间,可以缩写也可以不缩写。
我构建了以下示例:
data = {'file': ['1','2','3','4','5','6'],
'observations': ['text one address', 'text 2 some',
'text home 3', 'notified text 4',
'text 5 add','text 6 homer']}
df = pd.DataFrame(data=data)
我正在尝试使用 pandas 看看我是否可以分离和提取 'home'、'not' 和 'address'。
我尝试了以下方法...('|'join
取自本网站的另一个答案)
conditions = ['home','not','address']
test = df[df['observations'].str.contains('|'.join(conditions))]
str.contains
不会工作因为它拾取 6: 'text 6 homer' 因为它包含 'home' (实际情况更糟因为有缩写,例如 'ho' 之类的东西。
str.match
不会工作,因为它会拾取 'notified'.
str.fullmatch
不会工作,因为它只能查找精确的字符串,而且这些都是长句子...
感谢帮助...
是否如你所愿:
>>> df[df['observations'].str.contains(fr"\b(?:{'|'.join(conditions)})\b")]
file observations
0 1 text one address
2 3 text home 3
\b
在单词边界断言位置:(^\w|\w$|\W\w|\w\W)
(?:...)
非捕获组
我有 100 万个条目数据集,其中包含人类输入的观察结果,以指示某些 'operational' 结果。尝试创建一些类别时,我需要查看此专栏并准确提取某些内容!最常用的表达方式。它们可以出现在字符串的开头、结尾或中间,可以缩写也可以不缩写。
我构建了以下示例:
data = {'file': ['1','2','3','4','5','6'],
'observations': ['text one address', 'text 2 some',
'text home 3', 'notified text 4',
'text 5 add','text 6 homer']}
df = pd.DataFrame(data=data)
我正在尝试使用 pandas 看看我是否可以分离和提取 'home'、'not' 和 'address'。
我尝试了以下方法...('|'join
取自本网站的另一个答案)
conditions = ['home','not','address']
test = df[df['observations'].str.contains('|'.join(conditions))]
str.contains
不会工作因为它拾取 6: 'text 6 homer' 因为它包含 'home' (实际情况更糟因为有缩写,例如 'ho' 之类的东西。
str.match
不会工作,因为它会拾取 'notified'.
str.fullmatch
不会工作,因为它只能查找精确的字符串,而且这些都是长句子...
感谢帮助...
是否如你所愿:
>>> df[df['observations'].str.contains(fr"\b(?:{'|'.join(conditions)})\b")]
file observations
0 1 text one address
2 3 text home 3
\b
在单词边界断言位置:(^\w|\w$|\W\w|\w\W)
(?:...)
非捕获组