我遇到以下情况。我很确定我错过了一些简单的东西,但我在这里和其他网站上尝试了很多建议,并没有找到我正在寻找的东西。
我有一个包含大量随机命名列的数据框(由提供的csv文件提供)。我想使用范围函数中的数字重命名这些列。
由于我正在重命名所有列,我可以直接使用
来完成df.columns = [str(x) for x in range(1,2000)]
但是,假设我可以通过rename()函数来实现吗?也许使用lambda?我尝试了很多不同的变化,但是我遇到了各种各样的错误。 我正在寻找语法给我相当于
df.rename(columns= (str(x) for x in range(1,2000)))
其中rename根据给定的范围顺序为列指定名称。 以上都行不通。但有没有办法让它发挥作用?
谢谢!
答案 0 :(得分:7)
您可以将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
答案 1 :(得分:2)
如果您只想使用数字重命名列,这可能是最简单的方法:
df.columns = np.arange(len(df.columns))
<强>演示:强>
df = pd.DataFrame({'A':['a', 'b', 'c'], 'B': ['d','e','f'], 'C': ['g','h','i']})
print(df)
A B C
0 a d g
1 b e h
2 c f i
重命名列:
df.columns = np.arange(len(df.columns))
print(df)
0 1 2
0 a d g
1 b e h
2 c f i