了解MultiIndex

时间:2012-11-07 00:46:06

标签: python pandas

所以我在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

2 个答案:

答案 0 :(得分:4)

自己想出来。

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

答案 1 :(得分:0)

作为替代解决方案,如果 - 出于任何原因 - 您希望在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