如何从列中的数据创建分层索引?

时间:2014-08-01 16:29:16

标签: python pandas reindex

我已经尝试了两天(我还是那个菜鸟)。任何人都可以帮我解决这个可能很简单的任务吗?

我正在练习这种格式的数据:

df = DataFrame({'year':[2010]*5 + [2011]*5, 'names':['a','b','c','d','e']*2, 'births':[1,2,3,4,5,6,7,8,9,10]})


    births names  year
0       1     a  2010
1       2     b  2010
2       3     c  2010
3       4     d  2010
4       5     e  2010
5       6     a  2011
6       7     b  2011
7       8     c  2011
8       9     d  2011
9      10     e  2011

我希望以这种格式得到它:

Year Name   births
2010   a    1
       b    2
       c    3
       d    4
       e    5
2011   a    6
       b    7
       c    8
       d    9
       e    10

我想要这样,所以我可以使用像df.ix('2010','a')这样的组合主键轻松访问它 - 我不知道这是否可能,或者它是如何引用它

任何人都可以解释我是怎么做到的吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

df = df.set_index(['year', 'names'])会给你你想要的东西。您可以访问元素

In[781]: df.set_index(['year', 'names']).xs(2010)
Out[777]: 
       births
names        
a           1
b           2
c           3
d           4
e           5
In[782]: df.set_index(['year', 'names']).xs([2010, 'a'])
Out[778]: 
births    1
Name: (2010, a), dtype: int64