繁体   English   中英

df.rename 不会更改 df 列名,但 df.columns 和 df.set_axis 会(Pandas)

[英]df.rename does not alter df column names, but df.columns and df.set_axis do (Pandas)

我有一个 pandas dataframe 我想重命名列

当我运行时:

df.rename(columns={0:"C", 1:"D"}, inplace=True)

没有发生任何变化,它仍然是原始列名。 但如果我这样做:

df.columns = ["C", "D"]

或者

df.set_axis(["C", "D"],axis=1, inplace=True)

有用。

为什么df.rename不起作用?

注意:我特别想重命名第一列和第二列,不管它们的名字是什么,它可能会改变(在我的情况下)所以我不能指定它。

例子:

df = pd.DataFrame({"A": pd.Series(range(0,2)),"B": pd.Series(range(2,4))})
df
    A   B
1   0   2
2   1   3

df = pd.DataFrame({"A": pd.Series(range(0,2)),"B": pd.Series(range(2,4))})
df.rename(columns={0:"C", 1:"D"}, inplace=True)
df
    A   B
1   0   2
2   1   3

df = pd.DataFrame({"A": pd.Series(range(0,2)),"B": pd.Series(range(2,4))})
df.columns = ["C", "D"]
df
    C   D
0   0   2
1   1   3

df = pd.DataFrame({"A": pd.Series(range(0,2)),"B": pd.Series(range(2,4))})
df.set_axis(["C", "D"],axis=1, inplace=True)
df
    C   D
0   0   2
1   1   3

编辑:

我原来的 dataframe 的列名是01 ,这就是df.rename(columns={0:"C", 1:"D"}, inplace=True)起作用的原因。

例子:

df = pd.DataFrame([range(2,4), range(4,6)])
df
    0   1
0   2   3
1   4   5

df.rename(columns={0:"C", 1:"D"}, inplace=True)
df
    C   D
0   2   3
1   4   5

如果您不想使用旧名称重命名,您可以zip当前列并传入您想要的项目数。

如果您使用的是 Python 3.7+,则应保留订单

也不要使用inplace=True

print(df)

   A  B
0  0  2
1  1  3

df.rename(columns=dict(zip(df.columns, ['C','E'])))

   C  E
0  0  2
1  1  3

df.rename(columns=dict(zip(df.columns, ['E'])))

   E  B
0  0  2
1  1  3

暂无
暂无

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

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