user9454050
user9454050

Reputation: 141

How can I rename a column that contains special (Greek) characters

I have a dataframe and in early in my script I name my columns using:

beta = 1.17
names =np.arange((beta-0.05),(beta+0.05),.01)
dfs.columns = [r'$\beta$'+str(i) for i in names]

Later in the script I want to replace r'$\beta$' with ats.

I have tried the following:

dfs.columns = dfs.columns.str.replace("[(r'$\beta$')]", "ats")

But, it isn't working as expected. Any suggestions are appreciate.

Thanks.

Upvotes: 1

Views: 1194

Answers (3)

Ken T
Ken T

Reputation: 2553

The problem seems to be that pandas.Series.replace use regex. So you need backslash to indicate a character but not a special character.

df.columns.str.replace(r"\$\\beta\$", "ats")

Upvotes: 0

jezrael
jezrael

Reputation: 862781

You need escape special regex characters $:

beta = 1.17
names =np.arange((beta-0.05),(beta+0.05),.01)

dfs = pd.DataFrame(0, columns=names, index=[0])
dfs.columns = [r'$\beta$'+str(i) for i in names]

dfs.columns = dfs.columns.str.replace(r'\$\\beta\$', "ats")
print (dfs)

   ats1.1199999999999999  ats1.13  ats1.14  ats1.15  ats1.16  ats1.17  \
0                      0        0        0        0        0        0   

   ats1.18  ats1.19  ats1.2  ats1.21  ats1.22  
0        0        0       0        0        0  

Upvotes: 2

BENY
BENY

Reputation: 323306

I using str.replace twice

df.columns.str.replace('[^0-9a-zA-Z.]+', "").str.replace('beta','ats')
Index(['ats1.1199999999999999', 'ats1.13', 'ats1.14', 'ats1.15', 'ats1.16',
       'ats1.17', 'ats1.18', 'ats1.19', 'ats1.2', 'ats1.21', 'ats1.22'],
      dtype='object')

Upvotes: 1

Related Questions