Python Поиск в таблице Excel строки по ключевому слову и возврат строки - PullRequest
0 голосов
/ 02 февраля 2020

Раскрытие информации: я не эксперт в этом, и у меня нет большой практики с этим. Однако я потратил несколько часов, пытаясь выяснить это самостоятельно.

У меня есть лист Excel с тысячами серийных номеров объектов и адресами, где они расположены. Я пытаюсь написать скрипт, который будет искать в столбцах «A» и «B» либо серийный номер, либо адрес и возвращать всю строку с дополнительной информацией о конкретном объекте. Я пытаюсь использовать python для написания этого скрипта, так как пытаюсь интегрировать его с уже существующим скриптом, который мне нужен для доступа к другим источникам. Используя Pandas, я смог загрузить лист .xls и вернуть значения всей электронной таблицы, но я не могу понять, как искать его таким образом, чтобы он возвращал только строку, относящуюся к тому, о чем я говорю около.

пример листа Excel

Вот мой код:

import pandas as pd
data = pd.read_excel('my/path/to.xls')
print(data.head())

Я могу работать с функцией печати для печати различных частей однако каждый раз, когда я пытаюсь добавить к нему функцию поиска, я теряюсь, и мои онлайн-исследования оказываются менее чем полезными. A.) Есть ли лучший python модуль для этой задачи? Или B.) Как реализовать функцию поиска, чтобы вернуть строку данных в качестве переменной, которая будет отображаться и / или использоваться для других аспектов программы?

1 Ответ

1 голос
/ 02 февраля 2020

Примерно так должно работать, pandas работает со строками, столбцами и индексами. Мы можем использовать все три, чтобы ваша утилита работала.

import pandas as pd

serial_number = input("What is your serial number: ")
address = input("What is your address: ")
# read in dataframe
data = pd.read_excel('my/path/to.xls')
# filter dataframe with a str.contains method.

filter_df = data.loc[(data['A'].str.contains(serial_number)) 
          | data['B'].str.contains(address)]

print(filter_df)

, если у вас есть список элементов, например,

serial_nums = [0,5,9,11]

, вы можете использовать isin, который фильтрует ваш фрейм данных на основе в списке.

data.loc[data['A'].isin(serial_nums)]

надеюсь, это поможет вам начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...