2015-03-11 2 views

Antwort

35

Verwenden Sie die vektorisiert str Methode replace:

In [30]: 

df['range'] = df['range'].str.replace(',','-') 
df 
Out[30]: 
     range 
0 (2-30) 
1 (50-290) 

EDIT

Also, wenn wir schauen, was Sie versucht haben, und warum es nicht funktioniert:

df['range'].replace(',','-',inplace=True) 

aus der docs wir sehen diese ab:

str oder regex: str: String genau passende to_replace wird mit Wert

So ersetzt werden, da die str Werte nicht übereinstimmen, tritt kein Ersatz, vergleichen mit den folgenden:

In [43]: 

df = pd.DataFrame({'range':['(2,30)',',']}) 
df['range'].replace(',','-', inplace=True) 
df['range'] 
Out[43]: 
0 (2,30) 
1   - 
Name: range, dtype: object 

Hier erhalten wir eine genaue Übereinstimmung in der zweiten Zeile und der Austausch tritt auf. ja

+0

@EdChum das wäre toll ich bin gespannt! Liegt es daran, dass es sich um einen String-Ersatz handelt? – UserYmY

+0

downvoter Pflege – EdChum

+0

zu erklären Gibt es eine Möglichkeit, die tersity des Inplace-API entsprechen? (kann nett sein, wenn entweder der Dataframe oder die Spaltennamen lang sind) – maxymoo