繁体   English   中英

在 Python 中动态更改列名

[英]Changing column name dynamically in Python

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

我想重命名列。 我知道使用数据框可以通过这种方式重命名列:

df.rename(columns={"A": "a", "B": "c"})

但是由于我有 50 个列,我想通过循环重命名这些列,以便学习和提高效率。

我想将第0 列重命名为'Name' ,将Group 1, Group 2重命名为Country ,其余重命名为Group 1, Group 2等等。

到目前为止,这是我对第 3 列到第 50 列的解决方案。我正在考虑手动重命名前 2 列,因为我无法在循环中找到更好的方法。

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 <x>' ,你只需使用

    name = 'Group {:d}'.format(x)

或者

    name = '{} {:d}'.format(start, x)

如果你喜欢。 如果您更喜欢使用+进行连接而不是格式字符串,则可以使用

    name = start + ' ' + str(x)

您应该在循环之前定义 x 以免它一次又一次地从 1 开始。 您可以使用字符串“Group”代替起始变量。 变量 x 应该转换为字符串格式。 这将使您可以连接两个字符串 - 'Group' 和各自的 x 数字。

x = 1
for col in df.columns[2:]:
  name = 'Group '+str(x)
  df = df.rename(columns={col:name})
  x = x+1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM