Dem DataFrame eine Liste übergeben der Geschwindigkeit wegen

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
Benutzeravatar
Strawk
User
Beiträge: 229
Registriert: Mittwoch 15. Februar 2017, 11:42
Wohnort: Aachen
Kontaktdaten:

Hallo!

Code: Alles auswählen

class Track():
    def __init__(self, gpxdata):
        """
        constructor, creates dataframe
        """
        data = gpxdata.tracks[0].segments[0].points
        df = pd.DataFrame(columns=['lon', 'lat', 'alt', 'time'])
        
        for point in data:
            df = df.append({'lon': point.longitude, 'lat' : point.latitude, 'alt' : point.elevation, 'time' : point.time}, ignore_index=True)
        
        self.df = df
Das Anhängen an den DataFrame ist zeitintensiv. Deswegen möchte ich erst eine (schnellere) Liste und dann diese als Ganzes dem DataFrame übergeben. Aber ich habe ein Brett vor dem Kopf. Wie mache ich das?
LG Strawk
Ich programmiere erfolglos, also bin ich nicht.
Benutzeravatar
__blackjack__
User
Beiträge: 13079
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Strawk: Du erstellst einfach eine Liste von dem was Du da jetzt an den `DataFrame` anhängst und übergibst die dann `DataFrame` beim erstellen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
Strawk
User
Beiträge: 229
Registriert: Mittwoch 15. Februar 2017, 11:42
Wohnort: Aachen
Kontaktdaten:

Hallo!
Mein Kopf raucht seit vier Stunden; darf ich ausnahmsweise um konkreten Code bitten?
Strawk
Ich programmiere erfolglos, also bin ich nicht.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Wörtlicher kann man das, was Du und __blackjack__ geschrieben haben, eigentlich nicht nach Python übersetzen:

Code: Alles auswählen

        df = list()
        for point in data:
            df.append({'lon': point.longitude, 'lat' : point.latitude, 'alt' : point.elevation, 'time' : point.time})
        self.df = pd.DataFrame(df, columns=['lon', 'lat', 'alt', 'time'])
Benutzeravatar
Strawk
User
Beiträge: 229
Registriert: Mittwoch 15. Februar 2017, 11:42
Wohnort: Aachen
Kontaktdaten:

Hallo ihr!
Eine saubere Sache. Ich habe sehr zu danken.
Frohes neues Jahr!
Euer
Strawk :)
Ich programmiere erfolglos, also bin ich nicht.
Antworten