Хорошо, мне нужна помощь. Я создал функцию для поиска в строке определенного c слова. Если функция находит search_word
, она вернет слово the и N слов, предшествующих ему. Функция отлично работает с моими тестовыми строками, но я не могу понять, как применить ее ко всей серии?
Моя цель - создать новый столбец во фрейме данных, который будет содержать n_words_prior
всякий раз, когда существует search_word
.
n_words_prior = []
test = "New School District, Dale County"
def n_before_string(string, search_word, N):
global n_words_prior
n_words_prior = []
found_word = string.find(search_word)
if found_word == -1: return ""
sentence= string[0:found_word]
n_words_prior = sentence.split()[N:]
n_words_prior.append(search_word)
return n_words_prior
текущий фрейм данных выглядит следующим образом:
data = [['Alabama', 'New School District, Dale County'],
['Alaska', 'Matanuska-Susitna Borough'],
['Arizona', 'Pima County - Tuscon Unified School District']]
df = pd.DataFrame(data, columns = ['State', 'Place'])
Улучшенная функция будет принимать входные данные 'Place'
, 'County'
, -1
и создавать следующий результат.
improved_function(column, search_word, N)
new_data = [['Alabama', 'New School District, Dale County','Dale County'],
['Alaska', 'Matanuska-Susitna Borough', ''],
['Arizona', 'Pima County - Tuscon Unified School District','Pima County']]
new_df = pd.DataFrame(new_data, columns = ['State', 'Place','Result'])
Я думал, что встраивание этой функции поможет, но это только усложнило ситуацию.
def fast_add(place, search_word):
df[search_word] = df[Place].str.contains(search_word).apply(lambda search_word: 1 if search_word == True else 0)