Python sucht CSV-Format für den string in einer Spalte, gibt string aus einer anderen Spalte in der gleichen Zeile
Ich versuche, ein Programm zu schreiben, in python, das sucht ~27,000 Zeilen für jeden string in einer Liste. Jede saite, ich bin auf der Suche nach in einer Spalte, und hat ein 'id' - Wert in einer anderen Spalte möchte ich, dass gedruckt wird, wenn gefunden. Der code, den ich aktuell haben, zählt die Anzahl der Male, dass die Zeichenfolge in das Dokument angezeigt wird, aber ich bin noch nicht in der Lage, einen Weg zu finden, um bestimmte Werte für die einzelnen eindeutigen Zeile, in der die strings zu finden sind.
import csv
fin = open('data.csv')
words = ["happy","sad","good","bad","sunny","rainy"]
found = {}
count = 0
for line in fin:
for word in words:
if word in line:
count = count + 1
found[word] = count
print(found)
Die wichtigsten semantischen problem mit dem code oben ist der Druck der 'gefunden' nur Wörterbuch liefert eine der Ergebnisse und deren Zählung von der "Worte" - Liste.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sagte Sie, dass Sie möchten, drucken Sie die id der Zeile, wenn Sie ein Wort. Angenommen, Sie haben eine Komma-separierte csv-Datei mit nur zwei Spalten, das ist, wie ich es tun würde:
Wenn Sie mehrere Spalten in der Datei, könnten Sie stattdessen tun:
Für so etwas, ich denke, mit der
pandas
Bibliothek halten Ihre Gesundheit in Schach. Unter der Annahme einer 15.000-Zeile CSV-Datei mit zwei Spalten,String
undID
.Alternativ, können Sie einfach erstellen Sie eine pivot-Tabelle und es werden ähnliche Ergebnisse.
Wenn Sie brauchen, um die IDs für jedes Wort können Sie nur wählen Sie einfach/index/filtern der Daten:
Wenn Sie es brauchen, wie eine Liste, dann:
Habe ich abgeschnitten einige Teile, das ist klar, aber die Idee bleibt die gleiche.
also, was Sie tun, ist die Zuweisung eines beliebigen Wertes an eine dictionary-Schlüssel, die passiert werden die letzten Wort, das Sie überprüfen in jeder iteration.
Scheint nicht sehr nützlich für mich. Ich denke, man beabsichtigt, etwas zu tun: