如何在Python(Pandas)中重命名特定范围的列

如何在Python(Pandas)中重命名特定范围的列,python,python-3.x,pandas,Python,Python 3.x,Pandas,上面的代码允许我在数据框中的所有列标题前面添加“KOAK”,但我只想在列编号4-38中添加KOAK前缀。我该怎么做呢?您可以通过使用列表理解压缩列序号范围并将其传递给重命名来创建dict: KOAK.rename(columns = lambda x : 'KOAK-' + x, inplace=True) 因此,在您的护理中,以下各项应起作用: In [2]: df = pd.DataFrame(columns=list('abcdefg')) df Out[2]: Empty Data

上面的代码允许我在数据框中的所有列标题前面添加“KOAK”,但我只想在列编号4-38中添加KOAK前缀。我该怎么做呢?

您可以通过使用列表理解压缩列序号范围并将其传递给
重命名
来创建dict:

 KOAK.rename(columns = lambda x : 'KOAK-' + x, inplace=True)
因此,在您的护理中,以下各项应起作用:

In [2]:
df = pd.DataFrame(columns=list('abcdefg'))
df

Out[2]:
Empty DataFrame
Columns: [a, b, c, d, e, f, g]
Index: []

In [3]:
new_cols = dict(zip(df.columns[2:5], ['KOAK-' + x for x in df.columns[2:5]]))
new_cols

Out[3]:
{'c': 'KOAK-c', 'd': 'KOAK-d', 'e': 'KOAK-e'}

In [6]:    
df.rename(columns= new_cols, inplace=True)
df

Out[6]:
Empty DataFrame
Columns: [a, b, KOAK-c, KOAK-d, KOAK-e, f, g]
Index: []

您可以分配给

new_cols = dict(zip(df.columns[3:47], ['KOAK-' + str(x) for x in df.columns[3:47]]))
df.rename(columns= new_cols, inplace=True)

这些列编号是名称还是顺序位置?它们是位置,而不是名称。如果列名是整数,则不需要将
x
转换为
str
,因为在KOAK.columns中,
x
是一个字符串。谢谢!这正是我所需要的。不一定,可以将int作为列名:
df=pd.DataFrame(columns=[0,1,2,3,4])
然后
df.columns.tolist()
返回:
[0,1,2,3,4]
嗯,OP在
lambda
函数中执行
'KOAK-'+x
。这个答案也满足了我的要求。非常感谢。
KOAK.columns = ['KOAK-' + x if 4 <= i <= 38 else x for i, x in enumerate(KOAK.columns, 1)]
KOAK = pd.DataFrame(dict.fromkeys('ABCDEFG', [12]))
KOAK.columns = ['KOAK-' + x if 2 <= i <= 4 else x 
                for i, x in enumerate(KOAK.columns, 1)]
print(KOAK)
    A  KOAK-B  KOAK-C  KOAK-D   E   F   G
0  12      12      12      12  12  12  12