在pandas数据框中搜索文本列而不进行循环

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在pandas数据框中搜索文本列而不进行循环相关的知识,希望对你有一定的参考价值。

我有一个pandas数据框,其中一列是文本描述字符串。我需要创建一个新列,以确定列表中的一个字符串是否在文本描述中。

df = pd.DataFrame({'Description': ['2 Bedroom/1.5 Bathroom end unit Townhouse.  
Available now!', 'Very spacious studio apartment available', ' Two bedroom, 1 
bathroom condominium, superbly located in downtown']})

list_ = ['unit', 'apartment']

然后结果应该是

                                        Description    in list
0  2 Bedroom/1.5 Bathroom end unit Townhouse.  Av...    True
1           Very spacious studio apartment available    True
2   Two bedroom, 1 bathroom condominium, superbly...   False

我可以这样做

for i in df.index.values:
    df.loc[i,'in list'] = any(w in df.loc[i,'Description'] for w in list_)

但是对于大型数据集,它需要的时间比我想要的要长。

答案

通过使用str.contains

list_ = ['unit', 'apartment']
df.Description.str.contains('|'.join(list_))
Out[724]: 
0     True
1     True
2    False
Name: Description, dtype: bool
另一答案

使用np.char.find -

v = df.Description.values.astype('U')[:, None]
df['in list'] = (np.char.find(v, list_) > 0).any(1)

df

                                         Description  in list
0  2 Bedroom/1.5 Bathroom end unit Townhouse.  Av...     True
1           Very spacious studio apartment available     True
2   Two bedroom, 1 bathroom condominium, superbly...    False

以上是关于在pandas数据框中搜索文本列而不进行循环的主要内容,如果未能解决你的问题,请参考以下文章

在 Power Query 中拆分列而不转换为文本?

在c中按钮单击,根据Excel中的ID搜索和显示数据

使用 pandas 数据框中的文本字符串数据进行条件数据选择

选择多个列而不进行多个查询 php mysql

在 pandas 数据框中搜索和替换大型数据集

如何处理以下文本文件进行文本分类?我希望每个段落都作为 pandas 数据框中的一行,但我无法做到 [关闭]