ich habe erst lange hier geguckt, bevor ich diesen Post schreibe, weil ich erst wissen wollte, ob jemand mal ein ähnliches Problem wie ich hatte.
Fand jedoch nichts treffendes (vielleicht auch falsch gesucht).
Sideinfo: Ich bin recht neu bei Python unterwegs und habe mir letztes Jahr so die Basics der Basic mit diversen Videos und Google erarbeitet und sitze nun seit Januar an meinem ersten eigen kleinen Projekt.
Komme auch alleine sehr gut zurecht, in dem ich mir nötige unterstützung aus verschiedensten Quellen hole.
Doch jetzt gerade stehe ich tatsächlich vor einem etwas für mich schwierigeren Brocken.
Was ist mein Ziel?
Für mein Projekt arbeite ich mit einer CSV Datei aus der ich meine Daten ins Program lese und verarbeite (klappt auch alles super), nun möchte ich aber diese CSV Datei am liebsten vom Programm aus bearbeiten können.
Soll heißen ich möchte einfach zum Beispiel in Spalte A - die mit einem Header betitelt ist einen bestimmten Text einfach darunter anhängen (selbe Spalte eine Zeile darunter), das Gleiche natürlich auch für Spalte B und so weiter.
Ich habe insgesammt 56 Zeilen und 14 Spalten (die sollen von der Spaltenanzahl aus so bleiben).
Ich habe auch schon zwei Lösungsansätze und auch hin und her probiert (ich lerne am besten durch probieren, statt nur durch lesen) und so sieht das bei mir gerade aus:
Code: Alles auswählen
import pandas as pd
df = pd.read_csv("../Essensgenerator new/Essenstabelle2.2.csv")
# to_string gibt die gesamte Tabelle aus
print(df.to_string())
# Die Dictionary Keys sind auch die bereits bestehenden Header der CSV Tabelle
new_meal = {"Kartoffeln (F)": str(input("kart_f: ", )),
"Nudeln (F)": str(input("nud_f: ", )),
"Reis (F)": str(input("reis_f: ", )),
"Couscous/Quinoa/Bulgur (F)": str(input("cous_f: ", )),
"Wraps/Burger/Baguette (F)": str(input("wrap_f: ", )),
"Multi (F)": str(input("mult_f: ", )),
"Suppe/Eintopf (F)": str(input("supp_f: ", )),
"Kartoffeln (V)": str(input("kart_v: ", )),
"Nudeln (V)": str(input("nud_v: ",)),
"Reis (V)": str(input("reis_v: ", )),
"Couscous/Quinoa/Bulgur (V)": str(input("cous_v: ", )),
"Wraps/Burger/Baguette (V)": str(input("wrap_v: ", )),
"Multi (V)": str(input("mult_v: ", )),
"Suppe/Eintopf (V)": str(input("supp_v: ", ))}
df = pd.DataFrame(new_meal, [0, 14])
df.to_csv("../Essensgenerator new/Essenstabelle2.2.csv", mode="a", header=False,index=False)
Spalte B zum Beispiel hat ab Zeile 21 leere Zellen, die dann übersprungen werden.
Nun weiß ich dass diese Zeilen / Zellen mit den Werten "NaN" gefüllt sind.
Deshalb hatte ich es als nächstes mit dem hier versucht:
Code: Alles auswählen
import pandas as pd
df = pd.read_csv("../Essensgenerator new/Essenstabelle2.2.csv")
# to_string gibt die gesamte Tabelle aus
print(df.to_string())
# Die Dictionary Keys sind auch die bereits bestehenden Header der CSV Tabelle
new_meal = {"Kartoffeln (F)": str(input("kart_f: ", )),
"Nudeln (F)": str(input("nud_f: ", )),
"Reis (F)": str(input("reis_f: ", )),
"Couscous/Quinoa/Bulgur (F)": str(input("cous_f: ", )),
"Wraps/Burger/Baguette (F)": str(input("wrap_f: ", )),
"Multi (F)": str(input("mult_f: ", )),
"Suppe/Eintopf (F)": str(input("supp_f: ", )),
"Kartoffeln (V)": str(input("kart_v: ", )),
"Nudeln (V)": str(input("nud_v: ",)),
"Reis (V)": str(input("reis_v: ", )),
"Couscous/Quinoa/Bulgur (V)": str(input("cous_v: ", )),
"Wraps/Burger/Baguette (V)": str(input("wrap_v: ", )),
"Multi (V)": str(input("mult_v: ", )),
"Suppe/Eintopf (V)": str(input("supp_v: ", ))}
df.fillna(new_meal, inplace=True)
df.to_csv("../Essensgenerator new/Essenstabelle2.2.csv", header=True, index=False)
-------------------------------------------------------------------------------------------------------
Jetzt wäre mein Plan halt beides irgendwie zu vermischen - ich möchte diese Inputs gezielt in die jeweiligen Spalten eintragen können, aber gleichzeitig die Zellen, in denen gerade ein "NaN" Wert ist einfach ausgetauscht wird - aber wirklich nur die EINE nächste Zelle.
Ich hoffe ich konnte mein Anliegen einigermaßen gut erläutern, wenn es noch unklarheiten gibt, lasst es mich wissen.
Ist auch mein erstes Mal, dass ich selber was in einem Forum erstelle, deswegen verzeit mir bitte, wenn ich an manchen Stellen etwas inkompetent anstelle.
Gruß Fjellnir