Neue Spalte in Dataframe 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
fischer-klaus3
User
Beiträge: 27
Registriert: Donnerstag 17. September 2020, 08:07

Hallo lieber pythoner,

dies ist mein jetziger Datensatz

timestamp visitorid event
x 12 view
x 12 transaction
x 14 addtocart

Was ich möchte ist

timestamp visitorid event code
x 12 view 1
x 12 transaction 2
x 14 addtocart 3

Also ich möchte eine neue Spalte hinzufügen die Zahlen enthält. Basierend auf dem Event soll eine Zahl gewählt werden. Dies bedeutet, wenn als Event view ausgewählt wurde dann soll als Code eine 1 eingetragen werden, als addtocart eine 3 und für transaction eine 2 .

Dies ist mein Versuch, leider ohne Erfolg

Code: Alles auswählen

df = pd.read_csv(path + "file.csv")

for i in df_event.shape:
    if event == "view":
       df_event["code"] = 1
    elif event == "addtocart":
      df_event["code"] = 2
    else:
      df_event["code"] = 3
Kann mir jemand bitte helfen? Ich bedanke mich im Voraus und wünsche einen tollen Tag!
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Was heißt "ohne Erfolg"? Was passiert?
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich tippe auf einen `NameError` weil `df_event` nirgends definiert ist. Wenn man das definiert ist `event` das nächste was undefiniert ist. Das ist kein Code das ist reines Wunschdenken in Python-Syntax. 😉
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
fischer-klaus3
User
Beiträge: 27
Registriert: Donnerstag 17. September 2020, 08:07

Ohhh, hoppla. Natürlich habe ich den Code so nicht 1:1 stehen. Habe den Name geändert und leider nicht alles geändert.
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich sehe nicht wie man das nur durch geänderte Namen auch nur halbwegs sinnvoll lauffähig bekommt. Der Code macht so einfach keinen Sinn, denn das iterieren über die Dimensionen, die bei einem DataFrame immer genau zwei sind, macht keinen Sinn und `event` kommt auch mit anderem Namen einfach so aus dem nichts, beziehungsweise ist nicht definiert.

Du suchst wohl die `map()`-Methode auf `Series`-Objekten. Der kann man eine Abbildung, also zum Beispiel ein Wörterbuch (`dict`) übergeben, und damit Wert auf andere Werte abbilden lassen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Upsi ich hab diesen Tab gerade wiedergefunden. Beispiel:

Code: Alles auswählen

In [125]: df                                                                    
Out[125]: 
  timestamp  visitorid        event
0         x         12         view
1         x         12  transaction
2         x         14    addtocart

In [126]: df["code"] = df["event"].map({"view": 1, "addtocart": 2, "transaction": 3})                                                                 

In [127]: df                                                                    
Out[127]: 
  timestamp  visitorid        event  code
0         x         12         view     1
1         x         12  transaction     3
2         x         14    addtocart     2
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten