【问题标题】:pandas, how to access multiIndex dataframe?pandas,如何访问 multiIndex 数据框?
【发布时间】:2016-08-16 20:00:45
【问题描述】:

显示我的代码

>>> 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数据帧中的数据。

【问题讨论】:

  • 尽管遵循文档并不容易(解释隐藏在 "advanced indexing" 部分中),但请记住,多级索引基于元组索引,因此访问数据需要 loc 和元组,即使有不使用 loc 甚至不使用元组的模棱两可的快捷方式。

标签: python python-2.7 pandas


【解决方案1】:

访问多索引数据帧中的数据类似于一般数据帧的方式。例如,如果你想读取 (a, data1.two) 处的数据,你可以简单地这样做:new_df['data1']['two']['a']new_df.loc['a', ('data1', 'two')]

请阅读official docs了解更多详情。

【讨论】:

    【解决方案2】:

    这可能有助于您了解和形象化

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-06
      • 2014-04-08
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      • 2016-09-19
      • 2013-01-21
      相关资源
      最近更新 更多