如何使用字符串列表在 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 中创建列表?