如何检查一系列字符串是不是包含在 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 中

检查列是不是包含类型字符串(对象)

pandas loc 检查值是不是包含多个单词或字符串中的任何一个

如何检查一列是不是以pandas中的a或b结尾

如何检查单元格是不是在 Pandas 中具有特定字符 [重复]

如何检查变量是 python 列表、numpy 数组还是 pandas 系列