Pandas: Excel mit Daten befüllen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
cheron173
User
Beiträge: 6
Registriert: Sonntag 23. Januar 2022, 17:32

Hallo,

ich bin Student (kein Informatik) und weitgehend unerfahren... deshalb komme ich leider nicht weiter beim Schreiben meines Programms.

Problem:
Ich möchte mithilfe von Pandas eingegebene Listen in Excel exportieren, sodass Liste 1 z.B. in Spalte 1 gelistet ist, Liste 2 in Spalte 2 usw.
Das Problem beim Export ist, dass immer nur die letzten Werte der Listen (s.u.), die eingegeben werden, in der ersten Zeile in Excel angezeigt werden und nicht alle Werte untereinander.

Wie könnte man das umsetzten? / Welchen Befehl gibt es da? (Mir ist bewusst, dass ich in Einzelfällen Zellen anwählen kann, in die Werte geschrieben werden sollen, aber da ich mit einer For-Schleife arbeite(n muss), komme ich nicht weiter.)

Mein Programm(abschnitt) sieht etwa so aus:
[...]
for i in range(len(obstsorten)):
print("#" + str(i + 1), "Sorten: " + obstsorten + " Gewicht: " +gewicht + " Anzahl: " + zahl + " Preis: " +preis +"€")

abc = pandas.DataFrame({'Sorte': [obstsorten],
'Gewicht': [gewicht],
'Anzahl': [zahl],
'Preis': [preis]})
writer = pandas.ExcelWriter('Datei_neu.xlsx', engine='xlsxwriter')
abc.to_excel(writer, sheet_name='Obstsalat', index=False)
writer.save()


--> die Zeile nach der For-Schleife funktioniert, sprich die Anzeige in Python


Vielen Dank im Voraus.

Grüße
cheron
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@cheron173: In der Python-Dokumentation gibt es ein Tutorial mit Grundlagen, das man mal durchgearbeitet haben sollte, und Pandas hat auch eine ganz gute Dokumentation.

Du hast Code geschrieben der genau das macht/als Ergebnis hat was Du da beschreibst. Warum hast Du etwas anderes erwartet? Dein `abc` (schlechter Name) enthält halt immer nur einen Datensatz. `to_excel()` schreibt den Frame, also den einen Datensatz in die Datei. Und die Datei wird immer überschrieben, darum steht da am Ende der letzte Datensatz drin.

Wenn Du die Pandas-Grundlagen durchgearbeitet hast, dann wirst Du sehen warum Du gar keine ``for``-Schleife brauchst.

Apropos ``for``-Schleife: ein ``for i in len(sequence):`` nur um `i` dann als Index in `sequence` zu verwenden ist in Python ein „anti pattern“. Das macht man nicht, weil man direkt über die Elemente von Sequenzen iterieren kann, ohne den Umweg über einen Index. Wenn man über mehrere Sequenzen ”parallel” iterieren möchte, dann gibt es dafür die `zip()`-Funktion. Aber wie gesagt, der Ansatz da selbst eine Schleife schreiben zu wollen ist schon falsch. Benutze Pandas.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
cheron173
User
Beiträge: 6
Registriert: Sonntag 23. Januar 2022, 17:32

Danke für deine Antwort blackjack,

bin weitergekommen und konnte das Problem durch das Lesen vieler Beiträge und der Doku (und durch viel ausprobieren) lösen :)
Antworten