【问题标题】:understanding MultiIndex了解多索引
【发布时间】:2012-11-07 00:46:05
【问题描述】:

所以我在 csv 中有一个这样的示例数据集:-

name    team    date       score
John    A   3/9/12      100
John    B   3/9/12      99
Jane    B   4/9/12      102
Peter   A   9/9/12      103
Josie   C   11/9/12     111
Rachel  A   30/10/12    98
Kate    B   31/10/12    103
David   C   1/11/12     104

执行以下操作:-

from pandas.io.parsers import read_csv

df = read_csv("data/Workbook1.csv", index_col=["team", "name"])

df

                 date  score
team name                   
A    John      3/9/12    100
B    John      3/9/12     99
     Jane      4/9/12    102
A    Peter     9/9/12    103
C    Josie    11/9/12    111
A    Rachel  30/10/12     98
B    Kate    31/10/12    103
C    David    1/11/12    104

如何进一步压缩第一个索引(“团队”),以免出现重复值?成为:-

                 date  score
team name                   
A    John      3/9/12    100
     Peter     9/9/12    103
     Rachel  30/10/12     98
B    John      3/9/12     99
     Jane      4/9/12    102
     Kate    31/10/12    103
C    Josie    11/9/12    111
     David    1/11/12    104

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我自己想出来的。

    df = read_csv("data/Workbook1.csv")
    
    df
    
         name team      date  score
    0    John    A    3/9/12    100
    1    John    B    3/9/12     99
    2    Jane    B    4/9/12    102
    3   Peter    A    9/9/12    103
    4   Josie    C   11/9/12    111
    5  Rachel    A  30/10/12     98
    6    Kate    B  31/10/12    103
    7   David    C   1/11/12    104
    
    df2 = df.pivot('team', 'name').stack()
    
    df2
    
                     date  score
    team name                   
    A    John      3/9/12    100
         Peter     9/9/12    103
         Rachel  30/10/12     98
    B    Jane      4/9/12    102
         John      3/9/12     99
         Kate    31/10/12    103
    C    David    1/11/12    104
         Josie    11/9/12    111
    

    【讨论】:

      【解决方案2】:

      作为替代解决方案,如果 - 无论出于何种原因 - 您希望在 read_csv 语句中保留多索引。

      相同的数据集。

      df = pd.read_csv("Workbook1.csv", index_col=["team", "name"])
      df.stack().unstack()
      
              date    score
      team    name        
      A   John    3/9/2012    100
          Peter   9/9/2012    103
          Rachel  30/10/12    98
      B   Jane    4/9/2012    102
          John    3/9/2012    99
          Kate    31/10/12    103
      C   David   1/11/2012   104
          Josie   11/9/2012   111
      

      【讨论】:

        猜你喜欢
        • 2017-05-30
        • 2018-10-25
        • 2012-09-25
        • 2016-01-03
        • 1970-01-01
        • 2015-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多