How to replace text in a column of a Pandas dataframe?

StackOverflow

I have a column in my dataframe like this:

range
"(2,30)"
"(50,290)"
"(400,1000)"
... 

and I want to replace the , comma with - dash. I"m currently using this method but nothing is changed.

org_info_exc["range"].replace(",", "-", inplace=True)

Can anybody help?

Answer rating: 298

Use the vectorised str method replace:

In [30]:

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

EDIT

So if we look at what you tried and why it didn"t work:

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

from the docs we see this desc:

str or regex: str: string exactly matching to_replace will be replaced with value

So because the str values do not match, no replacement occurs, compare with the following:

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

here we get an exact match on the second row and the replacement occurs.

Answer rating: 71

For anyone else arriving here from Google search on how to do a string replacement on all columns (for example, if one has multiple columns like the OP"s "range" column): Pandas has a built in replace method available on a dataframe object.

df.replace(",", "-", regex=True)

Source: Docs





Get Solution for free from DataCamp guru