Skip to main content
 首页 » 编程设计

python之使用 python/pandas 中的范围内的数字重命名列

2025年05月04日11dyllove98

我遇到了以下情况。我很确定我遗漏了一些简单的东西,但我在这里和其他网站上尝试了很多建议,但没有找到我要找的东西。

我有一个包含许多随机命名列的数据框(由提供的 csv 文件提供)。我想使用范围函数中的数字重命名这些列。

因为我要重命名所有列,所以我可以直接使用

df.columns = [str(x) for x in range(1,2000)] 

但是,假设我可以通过 rename() 函数来实现吗?也许使用 lambda?我尝试了许多不同的变体,但我遇到了各种各样的错误。 我正在寻找能给我相当于

的语法
 df.rename(columns= (str(x) for x in range(1,2000))) 

其中重命名根据给定范围按顺序将名称分配给列。 以上不起作用。但是有办法让它发挥作用吗?

谢谢!

请您参考如下方法:

你可以传递一个dict来重命名columns kwarg:

df.rename(columns={x:y for x,y in zip(df.columns,range(0,len(df.columns)))}) 

这需要:

>>> df 
   ID1  ID2 POS1 POS2     TYPE TYPEVAL 
1    A  001    1    5    COLOR     RED 
2    A  001    1    5   WEIGHT    50KG 
3    A  001    1    5   HEIGHT   160CM 
4    A  002    6   19   FUTURE     YES 
5    A  002    6   19  PRESENT      NO 
6    B  001   26   34   COLOUR    BLUE 
7    B  001   26   34   WEIGHT    85KG 
8    B  001   26   34   HEIGHT   120CM 
9    C  001   10   13   MOBILE   NOKIA 
10   C  001   10   13   TABLET    ASUS 

然后给你:

>>> df.rename(columns={x:y for x,y in zip(df.columns,range(0,len(df.columns)))}) 
    0    1   2   3        4      5 
1   A  001   1   5    COLOR    RED 
2   A  001   1   5   WEIGHT   50KG 
3   A  001   1   5   HEIGHT  160CM 
4   A  002   6  19   FUTURE    YES 
5   A  002   6  19  PRESENT     NO 
6   B  001  26  34   COLOUR   BLUE 
7   B  001  26  34   WEIGHT   85KG 
8   B  001  26  34   HEIGHT  120CM 
9   C  001  10  13   MOBILE  NOKIA 
10  C  001  10  13   TABLET   ASUS