【问题标题】:How to move pandas data frame multiindex column into 2 rows如何将熊猫数据框多索引列移动到 2 行
【发布时间】:2021-05-19 03:27:59
【问题描述】:

我的数据框有问题。我有一个带有 MultiIndex 列的 pandas 数据框,所以这意味着在我的数据框标题中我有像 ("A", 123"), ("B", 456"), ("C", 789) 这样的元组。我想从这个元组创建 2 行数据框看起来像这样:

"A" "B" "C"
123 456 789
row row row
row row row
row row row

对我来说有两种可能。我可以在 2 行中有一个标题,或者我可以只有一个标题,但在标题之后的 1 行中,我将有我的第二个元组元素。

你能帮我解决这个问题吗?我试过降级,但没用。

【问题讨论】:

    标签: python pandas dataframe indexing multi-index


    【解决方案1】:

    如果需要将 MultiIndex 转换为前 2 行,请使用带有转置的 MultiIndex.to_frameDataFrame.append,最后设置默认列名称:

    mux = pd.MultiIndex.from_tuples([("A", 123), ("B", 456), ("C", 789)])
    df = pd.DataFrame(0, columns=mux, index=[0])
    print (df)
        A   B   C
      123 456 789
    0   0   0   0
    
    df1 = df.columns.to_frame().T.append(df, ignore_index=True)
    df1.columns = range(len(df1.columns))
    print (df1)
         0    1    2
    0    A    B    C
    1  123  456  789
    2    0    0    0
    

    如果只需要移动第二级,请通过DataFrame.iloc 选择它,最后通过DataFrame.droplevel 删除第二级:

    df2 = df.columns.to_frame().T.iloc[[1]].append(df, ignore_index=True).droplevel(1, axis=1)
    print (df2)
         A    B    C
    0  123  456  789
    1    0    0    0
    

    【讨论】:

    • 非常感谢您的帮助。你提供了一个非常好的和聪明的方法来做到这一点。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-04-06
    • 2020-11-29
    • 1970-01-01
    • 2019-06-30
    • 2021-12-08
    • 2020-05-11
    • 2021-11-11
    • 2015-02-22
    相关资源
    最近更新 更多