我有一个使用pandas和列标签的DataFrame,我需要对其进行编辑以替换原始列标签。
DataFrame
我想A在原始列名称为的DataFrame 中更改列名称:
A
['$a', '$b', '$c', '$d', '$e']
至
['a', 'b', 'c', 'd', 'e'].
我已经将编辑后的列名存储在列表中,但是我不知道如何替换列名。
只需将其分配给.columns属性:
.columns
>>> df = pd.DataFrame({'$a':[1,2], '$b': [10,20]}) >>> df.columns = ['a', 'b'] >>> df a b 0 1 10 1 2 20
重命名特定列
使用该df.rename()函数并引用要重命名的列。并非所有列都必须重命名:
df.rename()
df = df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'}) # Or rename the existing DataFrame (rather than creating a copy) df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'}, inplace=True)
最小代码示例
df = pd.DataFrame('x', index=range(3), columns=list('abcde')) df a b c d e 0 x x x x x 1 x x x x x 2 x x x x x
下列方法均起作用并产生相同的输出:
df2 = df.rename({'a': 'X', 'b': 'Y'}, axis=1) # new method df2 = df.rename({'a': 'X', 'b': 'Y'}, axis='columns') df2 = df.rename(columns={'a': 'X', 'b': 'Y'}) # old method df2 X Y c d e 0 x x x x x 1 x x x x x 2 x x x x x
切记将结果分配回去,因为修改未就位。或者,指定inplace=True:
inplace=True:
df.rename({'a': 'X', 'b': 'Y'}, axis=1, inplace=True) df X Y c d e 0 x x x x x 1 x x x x x 2 x x x x x
从v0.25版开始,如果指定errors='raise'了无效的“要重命名的列” ,你还可以指定引发错误。参见v0.25 rename()文档。
errors='raise'
REASSIGN列标题
df.set_axis()与axis=1和inplace=False一起使用(返回副本)。
df.set_axis()
axis=1
inplace=False
df2 = df.set_axis(['V', 'W', 'X', 'Y', 'Z'], axis=1, inplace=False) df2 V W X Y Z 0 x x x x x 1 x x x x x 2 x x x x x
这将返回一个副本,但是你可以通过设置来就地修改DataFrame inplace=True(这是版本<= 0.24的默认行为,但将来可能会更改)。
你还可以直接分配标题:
df.columns = ['V', 'W', 'X', 'Y', 'Z'] df V W X Y Z 0 x x x x x 1 x x x x x 2 x x x x x