Python: pandas Liste

Kalops

Banned
Registriert
Nov. 2019
Beiträge
2
Hallo,

ich bin ein Python-Anfänger und erhoffe mir hier Hilfe. Derzeit liegt mein Fokus auf webscraping. Wie man die Daten speichert, ect ist mir, wie im unteren Code zu sehen, geläufig.

Python:
import pandas as pd
import ....
...

urls = ["1","2","3",...]

df = pd.DataFrame()

for url in urls:
    driver = webdriver.Firefox()
    driver.get(url)
    Seite = driver.page_source
    Seite_BS = BeautifulSoup(Seite, 'lxml')
    X = Seite_BS.find_all("Y")
    ....
    for Daten in X:
        X_1 = Daten.find(....)
        X_2 = ....
        X_3 = ....
        df = df.append(pd.DataFrame({"A": X_1, "B": X_2, "C":X_3}, index=[0]), ignore_index = True)
        ...
    driver.quit()


Ich speichere die Daten in einer CSV-File und hier ist mein Problem.

Jedes X_1, X_2, X_3 wird für jede url in der CSV-Datei in eine neue Zeile geschrieben, das Resultat ist eine lange Liste mit 3 Spalten.
Was muss ich ändern, wenn ich eine Liste haben möchte, bei der jedes X_1, X_2, X_3 für jede Website in eine neue Spalte, anstatt in eine neue Reihe, geschrieben werden soll ?
LG
 
Zuletzt bearbeitet:
Ich kenn mich zwar mit Python nicht so sehr aus, aber ich tippe auf die Exportspalte df.... A=x_1 B1=x_2 etc.

Kannst du statt den Buchstaben Nummern über eine Schleife i=i+1 zuweisen und es so exportieren?
 
Hallo,
mit Webinhalten kenne ich mich bei Python leider nicht so gut aus, eine neue Spalte in einem pandas df erstellst du aber einfach mit dfname["neuerSpaltennname"] = Inhalt, wobei Inhalt am besten eine Liste/Series ist, die auch zum Rest des DF passt.
zB also df[Daten.name (oder was auch immer)] = deine Daten, wenn ich das richtig verstanden habe, möchtest du ja nur eine Zeile? Das finde ich merkwürdig für ein DF ;)
Gerade gemerkt, dass du gar kein DF haben möchtest, sondern nur ein CSV. Du kannst das CSV einfach selbst schreiben, du brauchst gar kein CSV, dann hast du die totale Kontrolle über dein Ausgabeformat:
with open(pfad usw) as f:
f.write("Hier deine Ausgabe wie bei print()")

fertig.
Anders als print fügt write keinen Zeilenumbruch an.
 
Zuletzt bearbeitet:
noch einfacher wäre den DataFrame wenn er schon da ist, direkt in ein csv zu exportieren:
Python:
df.to_csv('myfile.csv')
entsprechende parameter siehe die pandas dokumentation.
 
Zurück
Oben