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

Python 如何从列中的数据创建层次索引?,python,pandas,reindex,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

我在这方面已经试了两天了(我还是个笨蛋)。有人能帮我完成这个可能很简单的任务吗

我正在使用以下格式的数据进行练习:

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 = 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')
——我不知道这是否可行,或者它是如何引用的

谁能解释一下我是怎么做到的? 谢谢大家!

df=df。set_索引(['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

非常感谢你!我不是把它作为一个列表来传递的