Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/120: Рейтинг темы: голосов - 120, средняя оценка - 4.73
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811

Поиск совпадения по части слова

04.02.2020, 18:14. Показов 25580. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Загрузил excel файл с помощью pandas.
Подскажите как сделать поиск по части слова. Сейчас ищет слово целиком
df_rda['Площадка А'] == nomer_PL, где nomer_PL = '54_5555', например, а если мне известна только часть, например nomer_PL = '54_' ?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.02.2020, 18:14
Ответы с готовыми решениями:

Поиск совпадения части данных со списком
Всем здравствуйте! Есть такой код для поиска совпадения вводимых данных в TexBox с областью в таблице("b2:b9"): Sub...

Поиск по табличной части совпадение с каким-то наименованием и вывод совпадения
Имеется справочник, в нем есть реквизиты, также табличные части, в которых также есть реквизиты. Я создал кнопку которая должна выдать...

Как осуществить в строковом массиве поиск именно слова, а не части слова?
как осуществить в строковом массиве поиск именно слова(!), а не части слова. Допустим, есть строка: "this is horosho" Если я...

10
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,307
04.02.2020, 18:38
Python
1
2
3
4
5
6
7
>>> '54' in '54_5555'
True
>>> '54' in '1234567654321'
True
>>> '54' in '1234567890'
False
>>>
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
04.02.2020, 19:06
Лучший ответ Сообщение было отмечено eagl69 как решение

Решение

https://pandas.pydata.org/pand... tains.html
Python
1
2
3
4
5
6
7
8
s2 = pd.Series(['40', '40.0', '41', '41.0', '35'])
s2.str.contains('.0', regex=True)
0     True
1     True
2    False
3     True
4    False
dtype: bool
Python
1
2
3
4
5
6
7
8
9
>>> s = pd.Series(['54_5555', '54_11', '54_1', '53_5555', '52_5555'])
>>> s.str.contains("54_")
0     True
1     True
2     True
3    False
4    False
dtype: bool
>>>
Добавлено через 7 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> d = {'площадка': ['54_5555', '54_11', '54_1', '53_5555', '52_5555']}
>>> df = pd.DataFrame(data=d)
>>> df
  площадка
0  54_5555
1    54_11
2     54_1
3  53_5555
4  52_5555
>>> df[df['площадка'].str.contains("54_")]
  площадка
0  54_5555
1    54_11
2     54_1
>>>
P.S. regex=True\False включает\отключает использование регулярок. Включено по умолчанию, поэтому нужно помнить, что некоторые символы в поисковом шаблоне будут в этом случае интерпретироваться как метасимволы регулярных выражений, а не буквально (точка, скобки и т.д.)
1
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
05.02.2020, 09:37  [ТС]
Странно в консоли все работает, а вот если считываю файл и запускаю то выдает ошибку:
raise ValueError('cannot index with vector containing '
ValueError: cannot index with vector containing NA / NaN values
Python
1
2
3
xl = pd.ExcelFile('test1.xlsx')
df_rda = xl.parse()
df_nev = df_rda[df_rda['Площадка А'].str.contains("54_")]
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
05.02.2020, 13:35
Цитата Сообщение от eagl69 Посмотреть сообщение
вот если считываю файл и запускаю то выдает ошибку:
str.contains не работает с пропущеннымии данными - NaN.
Вам же заменить NaN в вашем файле на что-то другое (пустая строка) или получать срез данных без NaN.
0
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
05.02.2020, 14:14  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
str.contains не работает с пропущеннымии данными - NaN.
Вам же заменить NaN в вашем файле на что-то другое (пустая строка) или получать срез данных без NaN.
т.е. в столбце поиска есть пустые ячейки? строк очень много порядка 100 000 как можно пропускать пустые?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
05.02.2020, 14:22
Цитата Сообщение от eagl69 Посмотреть сообщение
как можно пропускать пустые?
дропить.
0
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
05.02.2020, 14:39  [ТС]
Но вот, что интересно, если пишу поиск по полному совпадению то ошибок не выдает.
Python
1
df_rda[df_rda['Площадка А'] == '54_555']
значит пустых ячеек нет? ошибка только при поиске части слова. сейчас сохранил часть таблицы в другом файле ошибки тоже нет...
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
05.02.2020, 15:28
Цитата Сообщение от eagl69 Посмотреть сообщение
значит пустых ячеек нет?
Есть. Изучайте notnull dropna isna и notna.
0
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
06.02.2020, 15:05  [ТС]
Вот поиск по части слова:
Python
1
df_rda[df_rda['Площадка А'].str.contains(nomer_PL, na=False)]
Теперь встал еще один вопрос, как не учитывать регистр? т.е. в тексте может быть буквы как заглавные так и маленькие.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
06.02.2020, 16:24
Цитата Сообщение от eagl69 Посмотреть сообщение
как не учитывать регистр?
str.contains по умолчанию делает поиск регуляркой. Вот и используйте этот факт.
Как указывать регистронезависимый поиск в регулярке вы в курсе?

Цитата Сообщение от eagl69 Посмотреть сообщение
na=
Просмотрел этот параметр. Раньше его не было и приходилось с NA что-то делать дополнительным кодом.

Добавлено через 3 минуты
Даже так оказывается можно:
case=False
Это будет тоже самое, что и re.IGNORECASE в re.compile.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.02.2020, 16:24
Помогаю со студенческими работами здесь

Поиск и замена слова только в части текста, которая начинается с определенного слова
Здравствуйте. Никак не могу найти решение своей задачи. Необходимо произвести поиск и замену слова old на new, но не во всем тексте, а...

Поиск по части слова
Как реализовать поиск по части слова? К примеру, у меня массив строк: testappletest blablabla apple appletest Я ввожу apple и...

Поиск по части слова
Как сделать поиск по части слова? Необходимая часть вводится в текстовое поле, а слова, которые необходимо найти записаны в таблице, каждое...

Поиск по части слова
Здравствуйте, не могу найти решение. Как сделать поиск по части слова в файле. Например есть логин mysite | sasha а мне нужно запретить...

Поиск по части слова
Нужно сделать поиск по части слова. Форма: <form id="sform" method="get" name="search"> <input id="scont"...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru