如何重命名包含特殊(希腊语)字符的列



我有一个数据帧,在我的脚本早期,我使用以下方法命名我的列:

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

稍后在脚本中,我想将r'$beta$'替换为ats

我尝试了以下方法:

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

但是,它没有按预期工作。任何建议不胜感激。

谢谢。

您需要转义特殊的正则表达式字符$

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  

我两次使用str.replace

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')

问题似乎是pandas.Series.replace使用正则表达式。因此,您需要反斜杠来指示字符而不是特殊字符。

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

最新更新