Pandas按位置重命名列?

106

我在想是否可以通过位置来重命名列名。我知道可以使用以下代码通过实际名称重命名它们:

df.rename(columns = {})

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

2个回答

233

试试这个

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

7
由于某些原因,我需要在这之后使用 df=df.rename({}) 才能使其生效。 - Shadi
4
我会选择John Zwinck的解决方案。如此做会导致一些奇怪的错误,正如这里所指出的:https://dev59.com/KlgQ5IYBdhLWcg3wGgP0 - rnorris
1
使用 df.rename(columns={ df.columns[1]: "你的值"}, inplace=True)。否则会返回一个副本。请参阅文档:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.rename.html - Lorem Ipsum
2
在没有“df”出现在重命名语句中的情况下,是否有可能实现这一点? - criticalth
27
如果所有列名都是唯一的,这种方法才有效。然而,如果例如df.columns[1] = df.columns[5],那么仅调用df.columns[1]会同时更改df.columns[1]df.columns[5] - Will Bachrach
显示剩余2条评论

60

你可以这样做:

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

这个无法使用以下列名 International airline passengers: monthly totals in thousands. Jan 49 ? Dec 60 - Shadi
19
请注意,对于标准行为,会创建并返回一个副本。您可以在 } 后面添加 inplace=True 来直接修改对象。 - Ace7k3
不是楼主,但非常感谢您的回答。您能告诉我在这种情况下关键字“inplace”是什么意思吗?当我将其设置为“True”时,我可以运行代码,但一直在试图弄清楚它的作用。再次感谢。 - Bowen Liu
@BowenLiu:你有看过文档吗?它描述了“inplace”。 - John Zwinck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接