在Python中动态更改列名
我有一个50列的数据框。索引行的问题是,所有列都命名为:未命名。 我想重命名这些列。我知道,使用dataframes,您可以这样重命名列:在Python中动态更改列名,python,python-3.x,dataframe,for-loop,Python,Python 3.x,Dataframe,For Loop,我有一个50列的数据框。索引行的问题是,所有列都命名为:未命名。 我想重命名这些列。我知道,使用dataframes,您可以这样重命名列: df.rename(columns={"A": "a", "B": "c"}) 但是由于我有50个列,为了学习和效率起见,我想通过一个循环来重命名这些列 我想将第0列重命名为'Name',第1列重命名为国家,其余的重命名为第1组、第2组,依此类推 这是我到目前为止针对第3列到第50列的解决方案。我正在考虑手动重命名前两列,因为我在循环中找不到更好的方法 f
df.rename(columns={"A": "a", "B": "c"})
但是由于我有50个列,为了学习和效率起见,我想通过一个循环来重命名这些列
我想将第0列重命名为'Name'
,第1列重命名为国家
,其余的重命名为第1组、第2组
,依此类推
这是我到目前为止针对第3列到第50列的解决方案。我正在考虑手动重命名前两列,因为我在循环中找不到更好的方法
for col in df.columns[2:]:
start = 'Group'
x = 1
name = '{}'+x.format(start)
df = df.rename(columns={col:name})
x = x+1
我得到以下错误:
AttributeError: 'int' object has no attribute 'format'
现在我明白了,这是因为x值。但是我想不出一种方法来动态更改每一列的列名。鉴于
x
是一个int
并且您想要得到一个字符串'Group'
,您只需使用
name = 'Group {:d}'.format(x)
或
如果你愿意的话。如果您更喜欢使用+
进行串联而不是格式化字符串,则可以使用
name = start + ' ' + str(x)
您应该在循环之前定义x,以便它不会一次又一次地从1开始。可以使用字符串“Group”代替start变量。变量x应转换为字符串格式。这将使您能够连接两个字符串-“组”和相应的x编号
x = 1
for col in df.columns[2:]:
name = 'Group '+str(x)
df = df.rename(columns={col:name})
x = x+1
嗨,谢谢你的回复。我尝试了你的建议,但所有的列仍然命名为:Zone 1。它似乎没有给x加+1?
x = 1
for col in df.columns[2:]:
name = 'Group '+str(x)
df = df.rename(columns={col:name})
x = x+1