Pandas,如何访问多级索引数据框?

24

展示我的代码

>>> df = pd.DataFrame({'key1': ['a', 'a', 'b', 'b', 'a'], \
                   'key2': ['one', 'two', 'one', 'two', 'one'], \
                   'data1': np.random.randn(5), \
                   'data2': np.random.randn(5)})

>>> new_df = df.groupby(['key1', 'key2']).mean().unstack()
>>> print new_df
         data1               data2
key2       one       two       one       two
key1
a    -0.070742 -0.598649 -0.349283 -1.272043
b    -0.109347 -0.097627 -0.641455  1.135560 
>>> print new_df.columns
MultiIndex(levels=[[u'data1', u'data2'], [u'one', u'two']],
       labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
       names=[None, u'key2'])

如您所见,MultiIndex数据框与普通数据框不同,那么如何访问MultiIndex数据框中的数据。


1
虽然阅读文档并不容易(解释深埋在“高级索引”部分中),但请记住多级索引是基于元组索引的,因此访问数据需要使用loc和元组,即使有一些不使用'loc'、甚至不使用元组的模糊快捷方式。 - mins
2个回答

27

访问多级索引的数据与通用数据框架的方式类似。例如,如果您想读取 (a, data1.two) 位置上的数据,可以简单地执行以下操作:new_df['data1']['two']['a']new_df.loc['a', ('data1', 'two')]

请阅读官方文档了解更多详情。


-2

这可能会帮助您了解和可视化

unstacked = multi_indexDataFrame.unstack().dropna()
unstacked.plot(kind="bar")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接