Alle bis auf das letzte Vorkommen eines Zeichens in einem Datenrahmen ersetzen

8

Verwenden von Pandas, um alle bis auf den letzten Punkt in einer Zeichenfolge wie folgt zu entfernen:

%Vor%

meine gewünschte Ausgabe ist jedoch:

%Vor%

Der Befehl zum Ersetzen zusammen mit dem Maskierungsziel scheint die nicht ersetzten Werte zu löschen und ich kann nicht sehen, wie ich das beheben kann.

    
seanysull 14.12.2017, 12:11
quelle

2 Antworten

7

Option 1
Dieses Regex-Muster mit str.replace sollte gut funktionieren.

%Vor%

Die Idee ist, solange es mehr Zeichen zu ersetzen gibt, ersetzen Sie es. Hier ist eine Aufschlüsselung des verwendeten regulären Ausdrucks -

%Vor%

Option 2
Wenn du dies mit count machen willst, ist es nicht unmöglich, aber es ist eine Herausforderung. Sie können dies mit np.vectorize vereinfachen. Definieren Sie zuerst eine Funktion -

%Vor%

Vectorize es -

%Vor%

Rufen Sie nun die Funktion v auf, übergeben Sie s und die zu ersetzenden Zählungen -

%Vor%

Denken Sie daran, dass dies im Grunde eine verherrlichte Schleife ist. Das Python-Äquivalent dazu wäre etwas wie -

%Vor%

Oder mithilfe eines Listenverständnisses -

%Vor%     
cᴏʟᴅsᴘᴇᴇᴅ 14.12.2017, 12:14
quelle
0

Sie möchten die maskierten Elemente ersetzen und den Rest unberührt lassen. Das ist genau das, was Series.where tut, außer dass es die unmaskierten Werte ersetzt, so dass Sie die Maske negieren müssen.

%Vor%

Oder Sie können die Änderungen an Ort und Stelle vornehmen, indem Sie die maskierten Werte zuweisen. Dies ist wahrscheinlich billiger, aber destruktiv.

%Vor%     
Goyo 14.12.2017 12:45
quelle

Tags und Links