Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中动态更改列名_Python_Python 3.x_Dataframe_For Loop - Fatal编程技术网

在Python中动态更改列名

在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

我有一个50列的数据框。索引行的问题是,所有列都命名为:未命名。

我想重命名这些列。我知道,使用dataframes,您可以这样重命名列:

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