我遇到了以下情况。我很确定我遗漏了一些简单的东西,但我在这里和其他网站上尝试了很多建议,但没有找到我要找的东西。
我有一个包含许多随机命名列的数据框(由提供的 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
