Ich arbeite mit Textdaten und ich möchte einfach eine neue Spalte basierend auf einer vorhandenen Spalte auffüllen.Verwenden von Split zum Füllen einer Spalte in Pandas Dataframe
Beispiel: Die Spalte sourceEncodedID
können Werte wie a.b.c
haben, und ich möchte nur den zweiten Teil der Zeichenfolge extrahieren, b
, wenn es einen zweiten Teil zur Verfügung steht. Hier sind einige Beispielwerte:
sourceEncodedID Branch
a.b.c b
c.r.d r
a a
p p
Um dies zu erreichen, habe ich mit dem folgenden Code kommen:
for i in range(0,20350):
if len(str(artifacts.sourceEncodedID[i]).split('.')) > 1:
artifacts['branch'][i] = str(artifacts.sourceEncodedID[i]).split('.')[1]
else:
artifacts['branch'][i] = str(artifacts.sourceEncodedID[i])
Es gibt nur 20k Zeilen in dem Datenrahmen und noch dieses Stück Code nehmen Minuten ausführen, bevor Sie meinen Browser nie fertigstellen und nicht mehr reagieren (ich verwende ipython notebook
). Ich hätte gedacht, das würde in ein paar Sekunden laufen.
Gibt es etwas offensichtlich albern in diesem Code, den ich nicht fangen kann? Wie repariere ich es?
Vielen Dank, es hat seinen Zweck erfüllt. Würdest du mir bitte auf die Dummheit hinweisen, die mir nicht klar ist, in meinem Code? – Patthebug
@Patthebug, ich habe meine Antwort aktualisiert - bitte überprüfen Sie – MaxU
Danke für das Hinzufügen der Erklärung, ich schätze es! Ich denke, es ist nur ein wenig frustrierend, denn man muss die vektorisierten Funktionen von Pandas kennen und zurück zu den Grundlagen zu gehen kostet Sie in Bezug auf die Zeit. Ich stimme zu, vektorisierte Lösungen sind besser, aber Sie müssen sie kennen. Eine Funktion nach der anderen !! – Patthebug