我正在尝试对具有诸如Std 1
,Std 2
,...,Std 8760
之类的列名的巨大数据帧执行计算。鉴于Python无法识别空格(' ')
,我想更改这些名称,但是使用df.rename
或df.replace
之类的函数将很耗时,因为我必须指定所有列的新名称,或将相同的名称赋予所有列(我不想要)。
此外,我尝试使用df.columns.str.replace(' ','_')
来消除空格并保持名称不变,但输出如下:
Index([u'_J_a_h_r_', u'_i_d___a_g_s___l_k_', u'_H_o_e_h_e___i_n___m_',
u'_S_t_d_ _1_', u'_S_t_d_ _2_', u'_S_t_d___1_', u'_S_t_d_ _4_',
u'_S_t_d_ _5_', u'_S_t_d_ _6_', u'_S_t_d_ _7_',
...
u'_S_t_d_ _8_7_7_5_', u'_S_t_d_ _8_7_7_6_', u'_S_t_d_ _8_7_7_7_',
u'_S_t_d_ _8_7_7_8_', u'_S_t_d_ _8_7_7_9_', u'_S_t_d_ _8_7_8_0_',
u'_S_t_d_ _8_7_8_1_', u'_S_t_d_ _8_7_8_2_', u'_S_t_d_ _8_7_8_3_',
u'_S_t_d___8_7_6_4_'],
dtype='object', length=8787)
这并不能解决我的问题,因为我仍然可以看到“ Std”和下图之间的空格。
答案 0 :(得分:0)
我不知道最好的方法,但是我会做这样的事情:
df_cols = df.columns.tolist()
map = str.maketrans({' ':'_'})
new_df_cols = [col.translate(map) for col in df_cols]
df.columns = new_df_cols