2017-05-05 1 views
2

Ich mache ein bisschen Webscraping und möchte Teile einer Zeichenkette entfernen.Pandas String Replace Error Python

PlayerDataHeadings = soup.select(".auflistung th") 
PlayerDataItems = soup.select(".auflistung td") 

    PlayerData = pd.DataFrame(
     {'PlayerDataHeadings': PlayerDataHeadings, 
     'PlayerDataItems': PlayerDataItems 
     }) 

Der obige Code erstellt einen Datenrahmen und funktioniert wie erwartet. In der 'PlayerDataHeadings' Spalte gibt es eine unerwünschte <th> am Anfang und </th> am Ende jedes Wertes, den ich entfernen möchte.

Der Code Ich verwende ist:

PlayerData['PlayerDataHeadings'].replace(
    to_replace['<th>', ':</th>'], 
    value='', 
    inplace=True 
    ) 

Diese Rückkehr: als Fehler "Nameerror name 'to_replace' ist nicht definiert".

Irgendwelche Gedanken darüber, wie diese zu beheben oder eine bessere Alternative wäre toll

Antwort

0

sei es Sie = vermissen scheint: Stichwort

to_replace= 

oder wegzulassen und fügen regex=True:

PlayerData['PlayerDataHeadings'].replace(['<th>', ':</th>'], '', inplace=True, regex=True) 

Probe :

PlayerData = pd.DataFrame({'PlayerDataHeadings':['<th>a:</th>','g']}) 
print (PlayerData) 
    PlayerDataHeadings 
0  <th>a:</th> 
1     g 
    PlayerDataHeadings 

PlayerData['PlayerDataHeadings'].replace(['<th>', ':</th>'], '', inplace=True, regex=True) 
print (PlayerData) 
    PlayerDataHeadings 
0     a 
1     g 

Bei allen keywords:

PlayerData['PlayerDataHeadings'].replace(to_replace=['<th>', ':</th>'], 
             value='', 
             inplace=True, 
             regex=True) 
print (PlayerData) 
    PlayerDataHeadings 
0     a 
1     g 
+0

Dank jezrael, wenn ich dein Beispiel der Code funktioniert laufen, aber wenn ich in meinem Skript ausführen darin die Zeichen ersetzt nicht, sondern auch einen Fehler nicht zurück. Irgendwelche Gedanken oder Ideen, warum? – DenJJ

+0

Schweres Problem ohne Daten finden. Aber es scheint, dass Sie einen Unterschied nicht ersetzen können. Wenn Daten nicht vertrauenswürdig sind, ist es möglich, [pickle] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_pickle.html) -Datei - 'PlayerData.to_pickle ('file.pkl ') 'und sende es an meine E-Mail in meinem Profil? – jezrael