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



我正试图在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循环并迭代它,但没有成功,也许我只是做错了?我对蟒蛇和熊猫还很陌生,所以如果有任何帮助,我将不胜感激,谢谢。

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

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

模式将设置为:r'bHonda|honda|Toyota|toyota|350b',其中:

两端的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'])

最新更新