Как проверить, содержит ли dataframe строку в python? - PullRequest
0 голосов
/ 04 ноября 2018

Мой report.txt содержит

I am a student from Tribhuwan university

тогда как мой dictionary.txt содержит это. enter image description here

Я пытаюсь проверить, содержат ли слова в словаре слова в отчете. Однако, используя приведенный ниже код, я получаю результат v как True только для первого элемента. Тогда как, по моему мнению, v должно быть верно для всех случаев, так как все слова в словаре содержатся в отчете. Пожалуйста, помогите мне понять, что я делаю не так.

Мой dictionary.txt содержит это

words, synonyms
I, me
student, pupil
tribhuwan,
university, school

enter image description here

import pandas as pd

report = pd.read_csv("report.txt", header=None)
dict = pd.read_csv("dictionary.txt")

for report in report[0]:
v = []
for word in dict['words']:
    if word in report[0]:
        v.append(True)
    else:
        v.append(False)

1 Ответ

0 голосов
/ 04 ноября 2018

Вам не нужен явный цикл for здесь. С помощью Pandas вы можете добавить дополнительный столбец к фрейму данных и использовать pd.Series.isin. Вы, вероятно, также должны сделать все буквы строчными для сравнения. Наконец, никогда не скрывает встроенное, т.е. не использует dict для имени переменной.

Вот демоверсия:

from io import StringIO

report = StringIO("""I am a student from Tribhuwan university
""")

dictionary = StringIO("""words, synonyms
I, me
student, pupil
tribhuwan,
university, school""")

df_report = pd.read_csv(report, header=None)
df_dict = pd.read_csv(dictionary)

words = df_report[0].str.lower().iat[0].split()

df_dict['check'] = df_dict['words'].str.lower().isin(words)

print(df_dict)

        words  synonyms  check
0           I        me   True
1     student     pupil   True
2   tribhuwan       NaN   True
3  university    school   True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...