2016-10-26 3 views
5

Bezug zu extrahieren: Pandas DataFrame: remove unwanted parts from strings in a columnWie erste beiden Zeichen von Zeichenfolge mit Regex

In Bezug auf eine Antwort in dem obigen Link zur Verfügung gestellt. Ich habe einige reguläre Ausdrücke recherchiert und plane tiefer zu tauchen, aber in der Zwischenzeit könnte ich Hilfe gebrauchen.

Mein Datenrahmen ist so etwas wie:

df:

c_contofficeID 
0   0109 
1   0109 
2   3434 
3   123434 
4   1255N9 
5   0109 
6   123434 
7   55N9 
8   5599 
9   0109 

Psuedo-Code

Wenn die ersten beiden Zeichen ein 12 entfernen sind. Oder fügen Sie den Zeichen, die keine 12 in den ersten zwei Zeichen enthalten, eine 12 hinzu.

Ergebnis würde wie folgt aussehen:

c_contofficeID 
0   0109 
1   0109 
2   3434 
3   3434 
4   55N9 
5   0109 
6   3434 
7   55N9 
8   5599 
9   0109 

ich die Antwort aus den obigen Link als Ausgangspunkt verwendet:

df['contofficeID'].replace(regex=True,inplace=True,to_replace=r'\D',value=r'') 

Ich habe versucht, die folgenden:

Attempt 1)

df['contofficeID'].replace(regex=True,inplace=True,to_replace=r'[1][2]',value=r'') 

Versuch 2)

df['contofficeID'].replace(regex=True,inplace=True,to_replace=r'$[1][2]',value=r'') 

Versuch 3)

df['contofficeID'].replace(regex=True,inplace=True,to_replace=r'?[1]?[2]',value=r'') 
+0

'^ 12' ist die Regex für "beginnt mit '12'" –

+1

Was ist, wenn Sie "1234" haben ? Soll "12" in diesem Fall beibehalten oder verworfen werden? –

Antwort

2

neue Antworten
pro Kommentar von @Addison

# '12(?=.{4}$)' makes sure we have a 12 followed by exactly 4 something elses 
df.c_contofficeID.str.replace('^12(?=.{4}$)', '') 

Wenn IDs müssen vier Zeichen haben, ist es einfacher zu

df.c_contofficeID.str[-4:] 

alte Antwort
Verwendung str.replace

df.c_contofficeID.str.replace('^12', '').to_frame() 

enter image description here

+1

Das ist gefährlich, da es nicht für '1234' funktioniert. Bitte verwenden Sie etwas wie '^ 12 (? =. {4} $)' – Addison

Verwandte Themen