2017-06-30 112 views
-2

如何在列名中间添加一个单词。像后缀,而不是在最后: 例子:重命名列名一次

VALUE_1 VALUE_2 VALUE_3

所需的输出: value_session_1 value_session_2 value_session_3

+2

'df.columns = df.columns.str.replace( '_', '_session _')'? – Zero

回答

1

使用mapformat,有可能加也串之前或之后:

df.columns = df.columns.map(lambda x: '{0[0]}_session_{0[1]}'.format(x.split('_'))) 

或者与str.replacecomment of John Galt解决方案:

df.columns = df.columns.str.replace('_', '_session_') 

样品:

df = pd.DataFrame(columns=['value_1','value_2','value_3']) 
print (df) 
Empty DataFrame 
Columns: [value_1, value_2, value_3] 
Index: [] 

df.columns = df.columns.map(lambda x: '{0[0]}_session_{0[1]}'.format(x.split('_'))) 
print (df) 
Empty DataFrame 
Columns: [value_session_1, value_session_2, value_session_3] 
Index: [] 

df.columns = df.columns.str.replace('_', '_session_') 
print (df) 
Columns: [value_session_1, value_session_2, value_session_3] 
Index: [] 

编辑:

df = pd.DataFrame(columns=['va_lue_1','va_lue_2','va_lue_3']) 
print (df) 
Empty DataFrame 
Columns: [va_lue_1, va_lue_2, va_lue_3] 
Index: [] 

df.columns = df.columns.map(lambda x: '{0[0]}_session_{0[1]}'.format(x.rsplit('_', 1))) 
print (df) 
Empty DataFrame 
Columns: [va_lue_session_1, va_lue_session_2, va_lue_session_3] 
Index: [] 
+0

谢谢,但如果我在列名中有多个'_',该怎么办?如何选择最后一个?其实,我有两个'_'出现,现在超过两个,所以如何选择secont'_' – jovicbg

+0

最长的答案可能不是最好的答案。 – staticor

+0

使用'rsplit',checl上次编辑。 – jezrael

2

replacing是很容易的,应该工作:

df.columns = df.columns.str.replace('_','_session') 

希望这有助于。快乐编码。

编辑: 就像@jezrael mentionned