Как использовать значения столбцов pandas для поиска в другом фрейме данных - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть два кадра данных панд, один из которых содержит один столбец всех обзоров фильмов с открытым текстом (movie_review_df), а другой (movie_ngrams_df) содержит наиболее распространенные ngram (верхние 5 из ngram = 1 и верхние 5 из ngram = 2)найдено в movie_review_df.

По сути, я хотел бы написать функцию, которая будет перебирать каждую строку моего столбца слов / словосочетаний в моем файле movie_ngrams_df и использовать их в качестве поисков, чтобы найти рецензии, содержащие эти слова / рабочие фразы.

Представьте, что мой movie_ngrams_df имеет 2 значения в 2 столбцах.

1) Слово «любовь» в столбце a (ngram_wordphrase) и «один» в столбце b (ngram_group)

2) Фраза «слишком длинный» в столбцах a и «two»в столбце b

Я думаю, что функция, которая использует цикл и вызов .contains(), будет работать, но, похоже, не может обернуть это вокруг себя.

Это как-то такхочу, чтобы это работало.

def ngram_lookup (ngram,reviews):
appended_df = pd.concat(for word in ngram:                            
reviews_df[reviews_df['reviews'].str.contains('ngram')])
return appended_df

Мне нужна функция, которая будет искать каждый текст рецензии на фильм в movie_review_df и извлекать рецензии, содержащие слово «любовь».Я хочу, чтобы вывод был новым df (ngram_detail_df), где каждая представленная строка содержит слово_фраза (например, love в столбце a), а затем полный обзор отдельной строки (помещен в столбец b), который содержит в себе слово «love».Таким образом, каждая word_phrase, вероятно, будет указана несколько раз в столбце a.

ТОГДА (вы знали, что это происходит), я хочу иметь возможность сделать то же самое для следующей фразы word_phrase в нашем movie_ngrams_df, которая была «слишком длинной».Я хочу добавить эти новые «слишком длинные» результаты к результатам, возвращаемым из нашего «любовного» поиска, чтобы в конце у нас был только один df, содержащий верхние word_phrases и каждый просмотр фильма, где присутствует это слово / word_phrase.

1 Ответ

1 голос
/ 16 апреля 2019

А что-то типа

words = movie_ngrams_df["ngram_wordphrase"].array
ngram_detail_df = movie_review_df.copy()

for word in words:
    ngram_detail_df[word] = ngram_detail_df["reviews"].apply(lambda x: word in x)

ngram_detail_df = ngram_detail_df.melt(id_vars=["reviews"])
ngram_detail_df = ngram_detail_df[ngram_detail_df["value"] == True]
ngram_detail_df = ngram_detail_df.loc[:, ["reviews", "variable"]
ngram_detail_df.rename(columns={"variable": "ngram"}, inplace=True)

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