如何检查一系列字符串是不是包含在 PANDAS DataFrame 列中并将该字符串分配为行中的新列?
Posted
技术标签:
【中文标题】如何检查一系列字符串是不是包含在 PANDAS DataFrame 列中并将该字符串分配为行中的新列?【英文标题】:How to check if a series of strings is contained in a PANDAS DataFrame columns and assign that string as a new column in the row?如何检查一系列字符串是否包含在 PANDAS DataFrame 列中并将该字符串分配为行中的新列? 【发布时间】:2018-04-05 16:10:57 【问题描述】:我有一系列子字符串,我想对照 DataFrame 列进行检查。例如:
SubStr = pd.series(['dog','cat','cow','fish'])
DataFrame 有一个名为“String”的列,其中:
df['String'] = (['The dog went for a Walk.','The fish was in the lake.','The dog was barking'])
我想在 DataFrame 中添加一列,其中包含在该行的“String”中找到的 SubStr,如果没有找到,则只添加 NaN。在我的示例中,新列应包含:
df['StrLookUp'] = ['dog','fish','dog']
在我的搜索研究中,我能够找到一些示例,说明在一系列元素中搜索列表中的任何项目,但没有一个返回找到的特定元素。
【问题讨论】:
【参考方案1】:使用正则表达式:
import re
pattern= '|'.join(['dog','cat','cow','fish'])
df['StrLookUp'] = [re.findall(pattern, i) for i in df['String']]
【讨论】:
以上是关于如何检查一系列字符串是不是包含在 PANDAS DataFrame 列中并将该字符串分配为行中的新列?的主要内容,如果未能解决你的问题,请参考以下文章
pandas loc 检查值是不是包含多个单词或字符串中的任何一个