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
非常感谢你!我不是把它作为一个列表来传递的