#python #excel #pandas #list #dataframe
Вопрос:
Я пытаюсь найти фрейм данных Pandas со списком в Python 3. Для ясности я нахожусь на компьютере с Windows с python 3.8.
У меня есть файл excel, в котором я ищу определенные ключевые слова в столбце заметок, а затем я хочу, чтобы программа вернула другой столбец, содержащий идентификационный номер. В настоящее время мой код делает это, помещая данные excel во фрейм данных pandas, а затем проверяя строковую переменную с помощью str.содержит, но у меня есть более одного ключевого слова, которое я хочу найти, и я не уверен, как это сделать.
Вот мой код до сих пор:
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 и пандах, поэтому буду очень признателен за любую помощь, спасибо.
Ответ №1:
Вы можете определить слова поиска в списке, а затем сгенерировать шаблон поиска следующим образом:
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'])
Комментарии:
1. Это именно то, что мне было нужно, спасибо!