【问题标题】:renaming column labels in multiindex df (built from excel)重命名多索引 df 中的列标签(从 excel 构建)
【发布时间】:2017-03-24 18:53:21
【问题描述】:

我正在读取一个 excel 文件并将内容操作到 pandas df。

这是 excel 内容的样子(图 1)。这就是我希望 df 的样子(图 2),但有一个例外 - 我想将索引级别 0 的列标签重命名,“A4+”重命名为“All Ind”,“A18-49”重命名为“Comm Demo” .

我遇到的问题是,当我重命名列标签时,它们会出现倒置,不知道为什么?

这是我使用的代码..

    full_path_to_excel_file = path_runs+excel_file_name+'.xls'

    df = pd.read_excel(full_path_to_excel_file, 0, header=None, index_col=0)
    df = df.iloc[11:,:]
    df = df.fillna(method='ffill', axis=1)

    df.columns=pd.MultiIndex.from_arrays(df[:2].values) 

    #Just name of index
    df.index.name=None

    #remove 3 rows which are already used as column names
    df = df[pd.notnull(df.index)] 
    df = df.drop(['Channel Group ...'])
    df.columns = df.columns.droplevel()
    df.columns.set_levels(['All Ind', 'Comm Demo'], 0, inplace=True) 

我使用的excel在这里:https://www.dropbox.com/s/vvpz8p7kzpcph6q/Time%20KPI%20000s%20BG.xls?dl=0

图1

图2

【问题讨论】:

    标签: python pandas dataframe rename multi-index


    【解决方案1】:

    使用set_levels
    考虑df

    df = pd.DataFrame(np.arange(8).reshape(-1, 4),
                      columns=pd.MultiIndex.from_product([['A4+', 'A18-49'], list('XY')]))
    df
    


    m = {'A4+': 'All Ind', 'A18-49': 'Comm Demo'}
    df.columns.set_levels(df.columns.levels[0].to_series().map(m), level=0, inplace=True)
    df
    

    【讨论】:

      猜你喜欢
      • 2016-09-15
      • 2015-06-04
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 2022-11-21
      • 2019-01-07
      • 1970-01-01
      • 2019-07-10
      相关资源
      最近更新 更多