Seite 1 von 1

Pandas - Nummer aus string extrahieren

Verfasst: Dienstag 13. Juli 2021, 19:47
von naheliegend
Hi,

ich habe einen df mit einer column df['text'], die strings beinhaltet.


Code: Alles auswählen

>df['text']

'Das ist text 723453339' 
'888453339undein22.1.2020' 
'hallo723453339das ist' 
'20.2.2020 hallo 723999339' 
'beispiel444453339' 
'hallo923453339 - d a 30' 
Ich bin nur an der 9-stelligen Nummer interessiert. Wie bekomme ich die extrahiert?

Also:

Code: Alles auswählen

>df['nummer']

723453339
888453339
723453339
723999339
444453339
923453339 

Re: Pandas - Nummer aus string extrahieren

Verfasst: Dienstag 13. Juli 2021, 20:04
von snafu
Ich würde dafür re.findall() benutzen:

Code: Alles auswählen

zahlen = re.findall("\d{9}", text)
print("\n".join(zahlen))

Re: Pandas - Nummer aus string extrahieren

Verfasst: Dienstag 13. Juli 2021, 20:11
von __blackjack__
Das ist ein `pandas.DataFrame`, da würde ich die `str`-Operationen verwenden die darauf definiert sind. Und man sollte/muss wahrscheinlich auch sicherstellen, dass 10 und mehrstellige Zahlen *nicht* gefunden werden‽

Re: Pandas - Nummer aus string extrahieren

Verfasst: Dienstag 13. Juli 2021, 20:30
von naheliegend
__blackjack__ hat geschrieben: Dienstag 13. Juli 2021, 20:11 Das ist ein `pandas.DataFrame`, da würde ich die `str`-Operationen verwenden die darauf definiert sind. Und man sollte/muss wahrscheinlich auch sicherstellen, dass 10 und mehrstellige Zahlen *nicht* gefunden werden‽
Wie würde das aussehen?

Re: Pandas - Nummer aus string extrahieren

Verfasst: Dienstag 13. Juli 2021, 20:57
von snafu
Ich fand re.findall() hierfür geeigneter als die String-Operationen. Man muss die IMHO nicht zwingend nutzen, nur weil sie zur Auswahl stehen. 🤷‍♂️

Re: Pandas - Nummer aus string extrahieren

Verfasst: Dienstag 13. Juli 2021, 20:58
von naheliegend

Code: Alles auswählen

df['text'].str.extract('(\d{9})', expand=False)
gibt mir die 9-stelligen Nummern.

Re: Pandas - Nummer aus string extrahieren

Verfasst: Dienstag 13. Juli 2021, 21:11
von snafu
Ah, cool. extract() kannte ich bisher nicht. Und das hier ist eindeutig ein Anwendungsfall für reguläre Ausdrücke. Das würde ich nicht Pythons standardmäßigen String-Operationen nachbauen wollen.

Re: Pandas - Nummer aus string extrahieren

Verfasst: Mittwoch 14. Juli 2021, 07:24
von Sirius3
@snafu: der OP arbeitet mit Dataframes. Und Dataframes haben verschiedene Stringoperationen definiert, die dann auf alle Elemente einer Spalte angewendet werden. Da sind auch Operationen mit regulären Ausdrücken dabei.