String split in Pandas dataframe

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
st_baum
User
Beiträge: 26
Registriert: Sonntag 24. Mai 2020, 13:54

Ich möchte nur die ersten Zeichen vor bestimmten Zeichen eines Pandas df extrahieren. Die Schwierigkeit besteht darin, dass es eine lange Liste an Zeichen ist, vor denen ich abschneiden möchte.

Ich habe das Problem lösen können, allerdings nur mit einem Loop:

Code: Alles auswählen

import pandas as pd
d = {'names': ['hans','hans.peter','hans_peter']}
df = pd.DataFrame(d)
liste = ['.','_']

for i in liste:
    df.names = df.names.str.split(pat = i ,n = -1).str[0]
Geht das auch eleganter, d.h. ohne Loop?
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

"i" ist ein sehr schlechter Name für ein Zeichen, weil man dahinter eine Zählvariable vermutet.
str.split() erwartet als pat eine Zeichenkette - oder einen regulären Ausdruck. Der reguläre Ausdruck wäre in diesem Fall wohl eleganter.
Antworten