Я хочу проверить, существует ли значение в CSV в другом CSV-файле возврата 1 - PullRequest
0 голосов
/ 07 октября 2019

У меня есть 2 CSV-файла: один dictionary.csv, а другой file.csv, который содержит много слов. Я хотел проверить, существует ли слово в dictionary.csv в определенном столбце file.csv.

Если он существует, должен быть создан новый файл new.csv. Этот файл должен содержать все данные из файла file.csv, но с одним дополнительным столбцом, в котором записывается 1, если он существует, и 0, если он не существует.

Вот мой скрипт:

import csv
import pandas as pd

news=pd.read_csv("file.csv")

dictionary=pd.read_csv("dictionary.csv", squeeze=True)

pattern = '|'.join(dictionary)

exist=news['sentences'].str.contains(pattern, na=False)

with open('new.csv', 'w') as outFile:
    for cols in exist:
        if pattern in exist:
            outFile.write(exist, "1")

В результате я получаю пустой CSV-файл, возможно, я что-то пропустил.

file.csv
id      sentences
0        Roses are red
1        burgers are delicious
dictionary.csv
red
blue
green

Файл new.csv должен содержать следующий вывод:

id      sentences                exist/not exist
0        Roses are red               1
1        burgers are delicious       0

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Вы можете использовать numpy.where для создания нового столбца и pandas.DataFrame.to_csv для записи результата в новый файл.

news["exist/not exist"] = np.where(
    news["sentences"].str.contains('|'.join(dictionary), na=False),
    1, 0
)

news.to_csv("name.csv", index=False)
0 голосов
/ 07 октября 2019

Учитывая, что у нас есть

file

   id              sentences
0   0          Roses are red
1   1  burgers are delicious

и

dictionary
       0
0    red
1   blue
2  green

Вы можете сделать это:

words=list(dictionary[0])
file['exist']=file['sentences'].apply(lambda x: len([i for i in words if i in x]))
print(file)

   id              sentences  exist
0   0          Roses are red      1
1   1  burgers are delicious      0

, а затем сохранить его:

file.to_csv('new.csv', index=False)
...