Dataframe mit zwei for loops erstellen

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
potyh
User
Beiträge: 5
Registriert: Mittwoch 18. Dezember 2019, 09:49

Ich möchte, einen Datenrahmen mit zwei for-Schleifen zu erstellen. Der Datenrahmen sieht wie folgt aus:

Code: Alles auswählen

 df = pd.DataFrame(columns=['date', 'ID', range(0,60)])
Wie mein Code aussieht:

Code: Alles auswählen

x=[(Datum, ID), (Datum2, ID2)

Code: Alles auswählen

for i in x:
        ##Berechnungen    
    for d in range 60:  #x sind die Tage 0 bis 60 
         z=Zahl #Berechnen Sie die Werte

Für jedes Tupel in x möchte ich eine Zeile anhängen. Die Werte der Zeilen sollten das Datum und die ID (i[0], i[1]) sein und dann die Werte meiner Berechnung in der letzten for-Schleife. Und d in der letzten Schleife bezieht sich auf den Spaltennamen. Fügen Sie also für d ==1 in der Spalte [1] den Wert von z ein.
Danke für die Hilfe
Benutzeravatar
__blackjack__
User
Beiträge: 14051
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@potyh: Der Datenrahmen sieht bestimmt nicht so aus, denn das macht keinen Sinn drei Spalten zu haben bei der der Index der dritten Spalte aus einem Tupel mit 60 Zahlen besteht.

Code: Alles auswählen

In [55]: df = pd.DataFrame(columns=['date', 'ID', range(0,60)])                 

In [56]: df                                                                     
Out[56]: 
Empty DataFrame
Columns: [date, ID, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59)]
Index: []
Man würde hier auch eher keinen leeren Datenrahmen erstellen und den füllen, schon gar nicht durch ”anhängen”, denn das geht technisch gar nicht — da würde man für jede Zeilen die man ”anhängt” immer den ganzen bisherigen Datenrahmen in einen neuen Datenrahmen mit einer Zeile mehr kopieren, was extrem ineffizient ist.

Mir ist nach der Beschreibung nicht klar was da gemacht werden soll und wie genau der endgültige Datenrahmen aussehen soll.

Das könnte auch mit den unglaublich schlechten Namen zu tun haben, denn `i` ist sicher kein sinnvoller Name für ein Tupel und `x` kein sinnvoller Name für eine Liste mit solchen Tupeln. Noch schlimmer wird es dann wenn nach einer Schleife über 60 Zahlen und einer Laufvariable `d` ein Kommentar steht der behauptet `x` seien die Tage 0 bis 60. `x` ist eine Liste mit zwei Tupeln und `d` geht nicht bis 60. Das ist alles eher verwirrend als erhellend. Namen sollten dem Leser vermitteln was die Werte bedeuten, und Kommentare sollten auf keinen Fall *falsch* sein. Denn Kommentare sind dazu da Sachen zu klären die man am Code nicht ablesen kann. Wenn die dann auch noch inhaltlich falsch sind, gehen die in eine ganz falsche Richtung.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
potyh
User
Beiträge: 5
Registriert: Mittwoch 18. Dezember 2019, 09:49

der Dataframe soll am Ende so aussehen. MIt Datum, ID und den Zahlen 0-60 als Spaltenname.

Due Tuples stellen Events von Unternehmen dar. Diese 'Eventliste' ist circa 1000 Tuple lang.
d steht für day und entpsricht dem x-ten Tag nach dem Event. Es werden 60 Tage nach dem Event betrachtet.

Die Ergebnisse aus meinen Berechnungen stellen die Zeilenwerte dar. Für jeden Tag (bis 60 Tage nach) dem Evengt gibt es einen Wert. Diese Berechnungen gehören zu einem Datum und einer ID. Dies möchte ich in einem Dataframe abspecihern.
Antworten