用于重命名轴

时间:2016-01-04 19:51:25

标签: python pandas

我通常重命名索引和/或列以跟踪数据框中的布局(不是列中的,而是列本身)。我知道的唯一方法是明确设置属性。

np.random.seed(10); a = np.random.randint(0, 20, (3, 2))
df = pd.DataFrame(a)
df.columns.name = 'A'
df.index.name = 'B'
df
    A   0   1
    B        
    0   9   4
    1  15   0
    2  17  16

是否有DataFrameSeries方法执行此操作以启用方法链接(即看起来像df.rename(column='A', index='B').[...other method calls])?我希望.rename()中有这个功能,但它似乎没有这个选项。

3 个答案:

答案 0 :(得分:0)

我不相信这种方法存在。但是嘿,如果你需要的话,加上它。

import numpy as np
import pandas as pd

class DF(pd.DataFrame):

    def rename_columns(self,name):
        self.columns.name = name
        return self

    def rename_index(self,name):
        self.index.name = name
        return self

np.random.seed(10); a = np.random.randint(0, 20, (3, 2))
df = DF(a)
df.rename_columns('egg').rename_index('bacon')
df

dataframe with changed columns and index

答案 1 :(得分:0)

这种方法确实存在。

使用df.rename_index('new_column_name', axis=0, inplace=True)重命名df.index。 (将axis=0更改为axis=1,以重命名df.columns。)

更多细节

在Pandas版本1之前的某个时候,功能df.renamedf.rename_index具有重叠的功能。现在,df.rename_index用于重命名整个df.index(或df.columns),而df.rename用于更改索引中的特定条目(或名称或特定列)。 / p>

Series对象中存在名称相似的方法,但是它们的工作方式略有不同。

答案 2 :(得分:0)

这是一篇旧文章,但我遇到了同样的问题,看来issue opened in the pandas repo已经完成。

rename_axis对象上现在有一个Dataframe方法,现在可以将名称赋予索引级别,并且可以通过方法链接来使用(我强烈建议阅读{{ 3}},有关方法链接)。

np.random.seed(10); a = np.random.randint(0, 20, (3, 2))
df = pd.DataFrame(a)
df
        0   1
             
    0   9   4
    1  15   0
    2  17  16
df.rename_axis(columns='A', index='B')
    A   0   1
    B        
    0   9   4
    1  15   0
    2  17  16

所生成的数据帧可以进一步用于方法链接,例如:

df.rename_axis(columns='A', index='B').stack('A')

    B  A
    0  0     9
       1     4
    1  0    15
       1     0
    2  0    17
       1    16