如何使用字符串列表在 Python 3 中搜索 pandas 数据框

Posted

技术标签:

【中文标题】如何使用字符串列表在 Python 3 中搜索 pandas 数据框【英文标题】:How can I use a list of strings to search a pandas dataframe with Python 3 【发布时间】:2021-09-06 09:23:20 【问题描述】:

我正在尝试使用 Python 3 中的列表搜索 Pandas 数据框。为了清楚起见,我在使用 python 3.8 的 Windows 机器上。

我有一个 Excel 文件,我正在查找备注列中的某些关键字,然后我希望程序返回另一个包含 ID 号的列。目前,我的代码通过将 excel 数据放入 pandas 数据框,然后使用 str.contains 检查字符串变量来执行此操作,但我有多个要搜索的关键字,但我不知道该怎么做。

到目前为止,这是我的代码:

import pandas as pd

searchWord1 = 'Honda'
searchWord2 = 'honda'
searchWord3 = 'Toyota'
searchWord4 = 'toyota'
searchWord5 = '350'

df = pd.read_excel('data.xlsx',sheet_name='Sheet1')

df2 = (df[df['Notes'].str.contains(searchWord1)])

print(df2['id_number'])

我尝试创建一个列表,使用 for 循环并迭代它,但没有运气,也许我做错了?我对 python 和 pandas 很陌生,所以任何帮助都将不胜感激,谢谢。

【问题讨论】:

【参考方案1】:

您可以在列表中定义搜索词,然后生成搜索模式,如下所示:

searchWords = ['Honda', 'honda', 'Toyota', 'toyota', '350']
pattern = rf"\b'|'.join(searchWords)\b"

pattern 将设置为:r'\bHonda|honda|Toyota|toyota|350\b' 其中:

两端的\b 是为了确保只匹配整个单词而不是部分单词匹配(例如匹配'350'但不匹配'12350')。如果需要部分单词匹配,可以去掉两端的这对'\b'。

| 是替代字符串的正则表达式元字符(如or

然后,使用搜索模式,如下:

df = pd.read_excel('data.xlsx',sheet_name='Sheet1')

df2 = (df[df['Notes'].str.contains(pattern)])

print(df2['id_number'])

【讨论】:

这正是我需要的,谢谢!

以上是关于如何使用字符串列表在 Python 3 中搜索 pandas 数据框的主要内容,如果未能解决你的问题,请参考以下文章

Python - 如何递归搜索作为列表元素的文本中的变量子字符串

在字符串列表中查找字符串中第一个字母的位置(Python 3)

如何根据 .txt 文件中的关键字在 Python 中创建列表?

在列表中搜索字符串并将其存储在 Python 中

从文本文件中读取句子并使用 Python 3 附加到列表中 [关闭]

在巨大列表中查找/搜索的最有效方法(python)