【问题标题】:Changing column name dynamically in Python在 Python 中动态更改列名
【发布时间】:2023-04-01 13:25:01
【问题描述】:

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

我想重命名这些列。我知道使用数据框可以这样重命名列:

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

但由于我有 50 列,为了学习和提高效率,我想通过循环重命名列。

我想将 column 0 重命名为 'Name'column 1 重命名为 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 值。但我无法想出一种方法让列名为每一列动态更改。

【问题讨论】:

    标签: python python-3.x dataframe for-loop


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      鉴于xint 并且您想获得一个字符串'Group <x>',您只需使用

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

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

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

          name = start + ' ' + str(x)
      

      【讨论】:

      • 您好,感谢您的回复。我尝试了您的建议,但所有列仍然命名为:Zone 1。它似乎没有向 x 添加 +1?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      • 2018-06-05
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多