Ich habe eine Spalte in einer Pandas df vom Typ object
, die ich analysieren möchte die erste Zahl in der Zeichenfolge zu bekommen, und erstellen Sie eine neue Spalte, die Nummer als int
enthält.Erstellen neuer Spalte In Pandas Datenrahmen Mit Regex
Zum Beispiel:
Bestehende df
col
'foo 12 bar 8'
'bar 3 foo'
'bar 32bar 98'
Wunsch df
col col1
'foo 12 bar 8' 12
'bar 3 foo' 3
'bar 32bar 98' 32
I-Code, der in der Spalte Serie
int(re.search(r'\d+', df.iloc[0]['col']).group())
Der obige Code funktioniert gut und gibt 12 zurück, wie es sollte. Aber wenn ich versuche, eine neue Spalte mit der gesamten Serie zu erstellen:
df['col1'] = int(re.search(r'\d+', df['col']).group())
bekomme ich folgende Fehler:
Typeerror: erwartete String oder Byte-ähnliches Objekt
Ich habe versucht, eine Verpackung str()
um df['col']
, die von dem Fehler losgeworden, sondern lieferte alle 0'en in col1
ich habe auch versucht col
zu einem list
der Umwandlung Strings und Iterieren durch die list
, die nur den gleichen Fehler ergibt. Weiß jemand was ich falsch mache? Hilfe wäre sehr willkommen.
Check-out die 'DataFrame.apply()' Methode. Wahrscheinlich ist Ihre Berechnung zu komplex für eine einfache Zuweisung. –
Sie könnten versuchen, 'df ['col']. Str.extract (r '(\ d +)')' –
@ WiktorStribiżew, ich würde auch hinzufügen "expand = False" ... – MaxU