Pandas, unterschiedliche Anzahl an Tabellen in csv File speichern

SDsda

Cadet 2nd Year
Registriert
Nov. 2019
Beiträge
16
Hallo, wieder eine Anfängerfrage bzgl. pandas.
Wie ist es möglich, mehrere Tabellen aus untersch. Websiten so in einer csv File zu speichern, das die Form übernommen wird und ich diese problemlos per LibreOffice öffnen kann ?
Mit
Code:
writer.writerow(table)
werden die Tabellen zwar in einer CSV File gespeichern, allerdings jede Tabelle in einer Reihe, was ich nicht möchte.

Mein Code sieht z.Z wie folgt aus:
Python:
for url in url_1:
    x = pd.read_html(url)
    with open('22.csv', 'a') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow(x)

Achja, die Anzahl der Tabellen auf der Website varriert. Ich danke für Lösungsvorschläge.
LG
 
Ich hab keine Ahnung was du da machst ...
Schau mal, du musst doch selbst erkennen, dass writer.writerow(x) genau eine Zeile schreibt, oder nicht? Ansonsten, Pydoc immer nutzen, generell Docs nutzen bitte!
Auszug für writerow:
csvwriter.writerow(row)
Write the row parameter to the writer’s file object, formatted according to the current dialect. Return the return value of the call to the write method of the underlying file object.

Changed in version 3.5: Added support of arbitrary iterables.


Wenn du ein Pandas Dataframe hast, dann nutzt man auch die to_csv davon. Ich hab dir jetzt einmal mal die Docs rausgesucht: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html

Was ich noch nicht ganz verstehe, mehrere Tabellen pro URL, wie sollen die geparsed werden? read_html erwartet eine HTML Tabelle, keine Webseite. Oder verstehe ich dich falsch?

Achja, mit so "sprechenden" Variablen wie x kommst du später mal nicht mehr weiter, nur mal so als Tip. Hättest es ja wenigstens df oder so nennen können ...
 
abcddcba schrieb:
Ich hab keine Ahnung was du da machst ...
Schau mal, du musst doch selbst erkennen, dass writer.writerow(x) genau eine Zeile schreibt, oder nicht? Ansonsten, Pydoc immer nutzen, generell Docs nutzen bitte!
Auszug für writerow:



Wenn du ein Pandas Dataframe hast, dann nutzt man auch die to_csv davon. Ich hab dir jetzt einmal mal die Docs rausgesucht: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html

Was ich noch nicht ganz verstehe, mehrere Tabellen pro URL, wie sollen die geparsed werden? read_html erwartet eine HTML Tabelle, keine Webseite. Oder verstehe ich dich falsch?

Achja, mit so "sprechenden" Variablen wie x kommst du später mal nicht mehr weiter, nur mal so als Tip. Hättest es ja wenigstens df oder so nennen können ...

Ich verstehe mein Handeln auch nicht so wirklich.
Auf einer Website sind mehrere HTML Tabellen zu finden. Mit diesem Code werden mir die Tabellen angezeigt, nun versuche ich diese rigendwie in eine CSV-File zu packen.

Python:
u = ['1','2','3']

for url in u:
    x = pd.read_html(url, thousands=None, flavor='bs4', header=0)
    print(x)
 
SDsda schrieb:
Hallo, wieder eine Anfängerfrage bzgl. pandas.
Wie ist es möglich, mehrere Tabellen aus untersch. Websiten so in einer csv File zu speichern, das die Form übernommen wird und ich diese problemlos per LibreOffice öffnen kann ?
Nein. Du mußt unterscheiden: Daten != Darstellung der Daten. Wenn Du wie auf den Webseiten haben möchtest, wäre vielleicht für Dich der einfachere Weg, die Seite als PDF entsprechend zu drucken und dann mit LO zu öffnen. Leider kann es Dir dabei passieren, daß die Formatierung und Struktur fehlerhaft ausgegeben bzw. reimportiert wird.
 
Zurück
Oben