Извлечь общие элементы в нескольких списках


В общем, я хочу извлечь общие элементы из колонки общего доступа "word" в нескольких CSV-файлах. (2008.csv, 2009.csv, 2010.csv .... 2015.csv)


Все файлы имеют одинаковый формат: "слово", "количество"

"слово" содержит все частые слова в одном документе за определенный год.


вот снимок одного из файлов:

файл 2008.csv


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

В любом случае, моя цель - узнать некоторые тенденции появления часто встречающихся слов в этих файлах. (Насколько мне известно, один элемент может быть не более пяти файлов.)

И я хочу знать слова, когда они появляются впервые, что означает слово в файле C, но не в файлах B и A.

Я знаю, что если + может решить проблему здесь, но это довольно утомительно, мне нужно сравнить 2 из 8, 3 из 8, 4 из 8... столбцов, в этом случае, чтобы найти общие элементы.

это код, который я разработал до сих пор... далеко от того, что мне нужно... я просто сравниваю элементы в двух из 8 файлов: код

Кто-нибудь может помочь?

2 ответа

Решение

Используйте набор intersection может помочь

for i in range(len(year_list)):
    datai=set(pd.read_csv('filename_'+year_list[i]+'.csv')['word'])
    tocompare=[]
    for j in range(i+1,len(year_list)):
        dataj=set(pd.read_csv('filename_'+year_list[j]+'.csv')['word'])
        print "Two files:",i,j
        print datai.intersection(dataj)
        tocompare.append(dataj)
    print "All compare:"
    print datai.intersection(*tocompare)
    break

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

for i in range(0,8):
otheryears = []
if i>0:
    for y in range(0,i):
        datay = set(pd.read_csv("most_50_common_words_"+year_list[y]+'.csv')["word"])
        for y in list(datay):
            if y not in otheryears:
                otheryears.append(y)     
uniquei = []
datai = set(pd.read_csv("most_50_common_words_"+year_list[i]+'.csv')["word"])
print "\nCompare year %d with:\n" % int(year_list[i])
for j in range(i+1,8):
    dataj = set(pd.read_csv("most_50_common_words_"+year_list[j]+'.csv')['word'])
    print year_list[j],':'
    listj = list(datai.intersection(dataj))
    print list(datai.intersection(dataj)),'\n',"%d common words with year %d" % (len(datai.intersection(dataj)),int(year_list[j]))
    for j in list(dataj):
        if j not in otheryears:
            otheryears.append(j)

common = []
for x in list(datai):
    if x in otheryears:
        common.append(x)   
print "\nAll compare:"
print "%d year has %d words in common with other years. They are as follows:\n%s" % (int(year_list[i]),
                                                                                     len(common),common),'\n'
for x in list(datai):
    if x not in otheryears:
        uniquei.append(x)
print "%d Frequent words unique in year %d:\n%s \n" % (len(uniquei),int(year_list[i]),uniquei)
Другие вопросы по тегам