Сканирование нескольких сохраненных документов на наличие слов и сохранение их вхождения (1 или 0) в информационном кадре с pandas - PullRequest
0 голосов
/ 11 января 2020

Я сейчас работаю над первым Python проектом и застрял на этом шаге. У меня есть список слов (переменная = список слов) и файлы / документы, хранящиеся в пути. Результат должен теперь показать матрицу со столбцами = названием статьи и строками = словами. Если слово появляется в тексте, я хочу получить «1», а если не «0».

Вот мой код:

filelists = os.listdir("Path")
df = pd.DataFrame(columns=[filelists],index=[wordlist])

for docPath in filelists:
    doc = io.open("Path" + '\\' + docPath, 'r', encoding = 'utf-8')
    file_content = doc.read()
    for word in wordlist:
        if word in file_content:
            df = df.append({'filelists': 1}, ignore_index=True)
        else:
            df = df.append({'filelists': 0}, ignore_index=True)
    doc.close()
    print(df)

Когда я запускаю код, я получаю TypeError: Ожидаемый кортеж, получен str .

Если я затем поместите значения 1 и 0 в tuple (), чтобы устранить эту ошибку.

if word in file_content:
    df = df.append({'filelists': tuple(1)}, ignore_index=True)
else:
    df = df.append({'filelists': tuple(0)}, ignore_index=True)

Однако теперь я получаю следующую ошибку.

TypeError: объект int не повторяется

Может ли кто-нибудь здесь помочь мне? Как вы видите, я новичок в кодировании, поэтому, пожалуйста, извините, если я сделал что-то совершенно не так в коде.

1 Ответ

0 голосов
/ 11 января 2020

Я думаю, что в вашем коде есть ошибка

filelists = os.listdir("Path")

, в этом случае переменная filelists будет списком, скажем ['A', 'B']. При создании Dataframe необходимо использовать filelists вместо [filelists].

df = pd.DataFrame(columns=filelists, index=wordlist)
df = df.append({'A':1, 'B':1}, ignore_index=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...