Применение подстановочного знака к фильтру Pandas isin

1

общий Noob здесь, извините за новичок вопрос. Я пытаюсь настроить свой мозг в Pandas, пытаясь отфильтровать серию в Dataframe, чтобы найти строки, содержащие один из списка строк.

import pandas as pd
streets = ['CONGRESS', 'GUADALUPE', 'BEN WHITE', 'LAMAR', 'MANCHACA', 'BURNET', 'ANDERSON', 'BRAKER' ]
# the actual list of street names is much longer than this

strs = pd.read_csv('short_term_rental_locations.csv')

# the following returns no values, or all 'False' values to be more accurate
strs[strs['PROP_ADDRESS'].isin(streets)]

# but if I use .contains, i can find rows that contain part of the 
# street names, but .contains has a limit of six positional arguments.
strs[strs['PROP_ADDRESS'].str.contains('CONGRESS')]

Я пробовал использовать подстановочный знак * с.isin безрезультатно. Я чувствую себя таким глупым, что борюсь с этим. Любая помощь очень ценится. Спасибо!

Теги:
string
pandas
dataframe
series

1 ответ

0
Лучший ответ

.contains имеет предел шести позиционных аргументов.

Там какое-то недоразумение. Непонятно, что означает "шесть позиционных аргументов". Строго говоря, pd.Series.str.contains имеет максимум 5 аргументов. Но только один на самом деле включает строки, которые вы ищете.

В этом случае вы можете использовать регулярное выражение, которое по умолчанию включено, для создания одной строки для использования с pd.Series.str.contains:

streets = ['CONGRESS', 'GUADALUPE', 'BEN WHITE', 'LAMAR',
           'MANCHACA', 'BURNET', 'ANDERSON', 'BRAKER' ]

searchstr = '|'.join(streets)
strs[strs['PROP_ADDRESS'].str.contains(searchstr)]
  • 1
    Это было быстро! Огромное спасибо. Теперь я вижу, как преобразовать список строк в одну строку для использования с pd.Series.str.contains. Очень признателен!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню