2016-04-18 6 views
0

Ich habe ein Python-System, wo es Fragen und Antworten aus separaten CSV-Dateien für ein Quiz-basiertes Programm mit tkinter lädt. Ich kann die Dateien laden, anzeigen, dem Benutzer erlauben, weitere Fragen hinzuzufügen und mehr.Python CSV Zeilenentfernung abhängig von Zeilennummer

Ich bin auf der Suche nach einer Möglichkeit, Python zu löschen, um eine Zeile abhängig von FrageNein (mein Zeilenzähler) zu löschen. Das System arbeitet damit, indem es mit den nächsten und vorherigen Schaltflächen zu der Frage navigiert und dann auf eine Frage, die sie nicht mögen, auf Löschen klickt. Also habe ich Zugriff auf die FrageNummer (der Index der Zeile, die ich löschen möchte), aber ich weiß nicht, wie ich sie mit Python löschen kann.

Jede Hilfe wird geschätzt. Ich hätte meinen Code hinzugefügt, aber eine Menge davon ist kontextbezogen zu meinem Programm (A Level Kurs) und das ist nur ein kleiner Teil davon. Ich möchte nicht eine andere CSV-Datei als temporär verwenden.

+0

Wenn Sie keine andere temporäre Datei verwenden möchten, müssen Sie alle Zeilen speichern, entfernen Sie alles, was Sie wollen, aus der Liste und überschreiben Sie dann die ursprüngliche Datei –

Antwort

0

Wenn Sie Pandas 'Paket verwenden, können Sie Ihre CSV-Dateien in Ihren RAM ziehen und dann verwenden, wie Sie wollen, bevor Sie es speichern und Ihre vorherige Datei löschen. Es ist sehr leistungsfähig für die Arbeit mit CSV, und verwendet keine temporäre CSV. Um Ihre Dateien zu öffnen und sie in einem Datenrahmen laden:

questions = pd.read_csv('questions.csv', columns = my_columns, index = my_index) 

Dann löschen Sie eine Linie:

import pandas as pd 
questions = pd.read_csv('questions.csv') 
answers = pd.read_csv('answers.csv') 

Sie einen Index zu dieser Dataframes durch hinzufügen

questions = questions.drop(number_of_your_question) 
answers = answers.drop(number_of_your_answer) 

Und um die Dateien zu speichern:

questions.to_csv 
answers.to_csv 
+0

Kann nicht scheinen, um pip zu arbeiten, um es zu installieren, gibt mir immer wieder Fehler. Ich werde Sie bald aktualisieren, wenn ich es zur Arbeit bringen kann, weil dies die Art von Lösung war, nach der ich gesucht habe. –

+0

Hat es funktioniert, aber ich verstehe nicht, wie Sie einen Index zuweisen und was der Index sein soll, so dass ich eine Variable verwenden kann, um eine Zeile später zu entfernen. –

+0

Sie verwenden den horizontalen Index. Das haben Sie mit der Option "index = my_index" festgelegt. Standardmäßig sieht der Index Ihres Datenrahmens wie eine Liste aus, die grundsätzlich die Nummern der Zeile enthält. dann durch Eingabe von questions = questions.drop (number_of_your_question, erstellen Sie den Datenrahmen durch "Vergessen" der Zeile [i] wobei i die Nummer Ihrer Frage ist. Beachten Sie, dass der Index nicht geändert wird, so dass Sie löschen Die vierte Frage, die neue 4. Frage wird immer noch 5 für den Index haben, da es die 5. Frage war, um zu vermeiden, dass Sie Folgendes eingeben müssen: df.reset_index(). drop ('index', 1) – ysearka