我有一个Pandas 数据框,我想重命名其上的列

当我 run 的时候:

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

没有变化,它仍然是原始的列名. 但如果我这么做了:

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

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

It w或ks.

Why does not df.rename w或k?

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

例子:

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

编辑:

My 或iginal dataframe had the column names 0 and 1 which is why df.rename(columns={0:"C", 1:"D"}, inplace=True) w或ked.

例子:

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,并传入所需的项数.

如果您使用的是Python3.7+,则顺序应为preserved

也不要用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

Python相关问答推荐

大Pandas 胚胎中产生组合

Pytest两个具有无限循环和await命令的Deliverc函数

' osmnx.shortest_track '返回有效源 node 和目标 node 的'无'

PMMLPipeline._ fit()需要2到3个位置参数,但给出了4个位置参数

在线条上绘制表面

PyQt5,如何使每个对象的 colored颜色 不同?'

pandas:排序多级列

无法在Docker内部运行Python的Matlab SDK模块,但本地没有问题

python中字符串的条件替换

如何并行化/加速并行numba代码?

Pandas Data Wrangling/Dataframe Assignment

在pandas数据框中计算相对体积比指标,并添加指标值作为新列

为什么常规操作不以其就地对应操作为基础?

将一个双框爆炸到另一个双框的范围内

如何删除重复的文字翻拍?

为什么后跟inplace方法的`.rename(Columns={';b';:';b';},Copy=False)`没有更新原始数据帧?

对数据帧进行分组,并按组间等概率抽样n行

更新包含整数范围的列表中的第一个元素

GEKKO中若干参数的线性插值动态优化

为什么fizzbuzz在两个数字的条件出现在一个数字的条件之后时不起作用?