【问题标题】:how to transpose multiple level pandas dataframe based only on outer index如何仅基于外部索引转置多级熊猫数据框
【发布时间】:2015-09-25 16:51:58
【问题描述】:

以下是我的具有两级索引的数据框。我希望“仅”将外部索引转置为列。我想要的输出将是 2X2 数据帧,而不是现在的 4X1 数据帧。有人可以帮忙吗?

        0
0    0  232

     1  3453

1    0  443

     1  3241

【问题讨论】:

    标签: python pandas dataframe hierarchical-data transpose


    【解决方案1】:

    鉴于您有多重索引,您可以在级别 0 上使用 unstack()。

    import pandas as pd
    import numpy as np
    
    index = pd.MultiIndex.from_tuples([(0,0),(0,1),(1,0),(1,1)])
    df = pd.DataFrame([[1],[2],[3],[4]] , index=index, columns=[0])
    
    print df.unstack(level=[0])
    
    
       0   
       0  1
    0  1  3
    1  2  4
    

    【讨论】:

      【解决方案2】:

      一种方法是重置索引,然后在索引的level_1 上旋转表索引,并使用level_0 作为列和0 作为值。示例 -

      df.reset_index().pivot(index='level_1',columns='level_0',values=0)
      

      演示 -

      In [66]: index = pd.MultiIndex.from_tuples([(0,0),(0,1),(1,0),(1,1)])
      
      In [67]: df = pd.DataFrame([[1],[2],[3],[4]] , index=index, columns=[0])
      
      In [68]: df
      Out[68]:
           0
      0 0  1
        1  2
      1 0  3
        1  4
      
      In [69]: df.reset_index().pivot(index='level_1',columns='level_0',values=0)
      Out[69]:
      level_0  0  1
      level_1
      0        1  3
      1        2  4
      

      稍后,如果您不想要level_*,可以将indexcolumns.name 属性设置为空字符串或任何您想要的值。

      【讨论】:

      • 很高兴能为您提供帮助。我还想请您接受答案(通过单击答案左侧的勾号),这将对社区有所帮助。
      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2019-10-28
      • 2020-02-13
      • 1970-01-01
      • 2018-05-28
      • 2020-06-24
      • 2015-02-22
      相关资源
      最近更新 更多