Как отобразить значение, которое в той же строке соответствует входу? - PullRequest
3 голосов
/ 04 апреля 2020

Данные имеют 2 столбца как title и genre. Поэтому я пытаюсь дать title значение строки, которая соответствует жанру с пользовательским вводом.

Вот что я пытаюсь:

#CSV READ & GENRE-TITLE
data = pd.read_csv("data.csv")
df_title = data["title"]
df_genre = data["genre"]

#TOKENIZE
tokenized_genre = [word_tokenize(i) for i in df_genre]
tokenized_title = [word_tokenize(i) for i in df_title]

#INPUT-DATA MATCH
search = {e.lower() for l in tokenized_genre  for e in l}
choice = input('Please enter a word = ')

while choice != "exit":
    if choice.lower() in search:
        print(data.loc[data.genre == {choice}, 'title'])
    else:
        print("The movie of the genre doesn't exist")
    choice = input("Please enter a word = ")

Но результат: Series([], Name: title, dtype: object)

Как я могу это решить?

Редактировать: Образцы данных для заголовка

0                              The Story of the Kelly Gang
1                                           Den sorte drøm
2                                                Cleopatra
3                                                L'Inferno
4        From the Manger to the Cross; or, Jesus of 
...

И для жанров:

0          Biography, Crime, Drama
1                            Drama
2                   Drama, History
3        Adventure, Drama, Fantasy
4                 Biography, Drama
...

1 Ответ

1 голос
/ 04 апреля 2020

Одно предложение только на основе Pandas

Я бы предложил что-то вроде этого (пожалуйста, адаптируйтесь к вашей ситуации в соответствии с вашими пожеланиями, это только некоторые общие рекомендации и советы, откуда вы можете начало):

import pandas as pd

# Warning: there are coma and semi-column in some of the films titles,
# so I had to use an other separator when exporting data to CSV, 
# here I decided to chose the vertical bar '|' as you can see)

#CSV READ & GENRE-TITLE
data = pd.read_csv("data.csv", sep="|")

choice = input('Please enter a word = ')

while choice != "exit":
    choice = choice.lower()
    for index, row in data.iterrows():
        if choice in row['genre'].lower():
            print(row['title'])
        else:
            print(("The movie of the genre {} doesn't exist").format(choice))
    choice = input("Please enter a word = ")


Редактировать

Чтобы сгенерировать случайное число:

from random import randint
i = randint(0, len(data))

Затем используйте i как индекс для поиска в вашем DataFrame.
Я позволю вам поиграть с этим.



Полезные ссылки

Есть Python есть строка «содержит» метод подстроки?
Как перебирать строки в DataFrame в Pandas?

...