更改多个列名称

dod*_*545 5 python pandas

假设我有一个具有此类列名称的数据框:

['a','b','c','d','e','f','g'] 
Run Code Online (Sandbox Code Playgroud)

我想将名称从“c”更改为“f”(实际上将字符串添加到列的名称中),因此整个数据框列名称将如下所示:

['a','b','var_c_equal','var_d_equal','var_e_equal','var_f_equal','g']
Run Code Online (Sandbox Code Playgroud)

好吧,首先我创建了一个函数,用我想要的字符串更改列名称:

df.rename(columns=lambda x: 'or_'+x+'_no', inplace=True)
Run Code Online (Sandbox Code Playgroud)

但现在我真的想了解如何实现这样的事情:

df.loc[:,'c':'f'].rename(columns=lambda x: 'var_'+x+'_equal', inplace=True)
Run Code Online (Sandbox Code Playgroud)

jpp*_*jpp 2

一种方法是使用字典而不是匿名函数。以下两种变体都假设您需要重命名的列是连续的。

按位置连续的列

d = {k: 'var_'+k+'_equal' for k in df.columns[2:6]}
df = df.rename(columns=d)
Run Code Online (Sandbox Code Playgroud)

按名称连续的列

如果需要计算数值索引:

cols = df.columns.get_loc
d = {k: 'var_'+k+'_equal' for k in df.columns[cols('c'):cols('f')+1]}
df = df.rename(columns=d)
Run Code Online (Sandbox Code Playgroud)

具体标识的列

如果您想明确提供列:

d = {k: 'var_'+k+'_equal' for k in 'cdef'}
df = df.rename(columns=d)
Run Code Online (Sandbox Code Playgroud)