【问题标题】:Pandas rename column by position? [duplicate]熊猫按位置重命名列? [复制]
【发布时间】:2017-10-01 06:40:05
【问题描述】:

我只是想知道是否可以按位置重命名列名。 我知道如何使用它们的实际名称重命名它们:

df.rename(columns = {})

如果我不知道列名而只知道它们的位置,我该怎么办?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    试试这个

    df.rename(columns={ df.columns[1]: "your value" }, inplace = True)
    

    【讨论】:

    • 由于某种原因,我需要df=df.rename({}) 才能生效
    • 我会选择 John Zwinck 的解决方案。这个解决方案实际上会导致一些奇怪的错误,如下所述:stackoverflow.com/questions/43291781/…
    • 我尝试了这个解决方案,但在我的代码中出现了非常奇怪的错误。我很难找到问题所在,这一切都归结为使用这个解决方案。所以我确认@rnorris 解释的内容 - 尝试并避免这种情况,因为它可能会导致问题。请改用 John Zwinck 的解决方案,这不会导致问题。
    • 使用df.rename(columns={ df.columns[1]: "your value"}, inplace=True)。否则返回一个副本。请参阅文档:pandas.pydata.org/pandas-docs/stable/generated/…
    • 这种方法只有在所有列名都是唯一的情况下才有效。但是,如果说df.columns[1] = df.columns[5],那么只调用df.columns[1] 将同时更改df.columns[1] 和df.columns[5]
    【解决方案2】:

    你可以这样做:

    df.rename(columns={ df.columns[1]: "whatever" })
    

    【讨论】:

    • 这不适用于以下列名称International airline passengers: monthly totals in thousands. Jan 49 ? Dec 60
    • 请注意,对于标准行为,将创建并返回一个副本。您可以在} 之后添加inplace=True 来修改对象。
    • 不是OP,但非常感谢您的回答。你能告诉我在这种情况下关键字inplace 有什么作用吗?我一直试图弄清楚,因为当我将代码设置为True 时我可以运行代码。再次感谢。
    • @BowenLiu:你读过文档吗?它描述了inplace
    猜你喜欢
    • 2016-12-23
    • 2019-05-25
    • 2021-08-15
    • 2020-05-03
    • 2021-10-25
    • 1970-01-01
    • 2013-02-03
    相关资源
    最近更新 更多