![](/img/trans.png)
[英]df.rename(columns) returns KeyError: ..values.. not found in axis"
[英]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 的列名是0
和1
,这就是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.