使用复合(分层)索引从Pandas数据帧中选择行。

16 浏览
0 Comments

使用复合(分层)索引从Pandas数据帧中选择行。

我怀疑这个问题很琐碎,但我还没有找到一个方法可以根据分层键的值从Pandas dataframe中选择行。所以,例如,想象一下我们有以下的dataframe:

import pandas
df = pandas.DataFrame({'group1': ['a','a','a','b','b','b'],
                       'group2': ['c','c','d','d','d','e'],
                       'value1': [1.1,2,3,4,5,6],
                       'value2': [7.1,8,9,10,11,12]
})
df = df.set_index(['group1', 'group2'])

df看起来和我们期望的一样:

enter image description here

如果df没有以group1作为索引,我可以这样做:

df['group1' == 'a']

但在这个有索引的dataframe上会失败。那么也许我应该将其视为带有分层索引的Pandas系列:

df['a','c']

不对,这也失败了。

那么我如何选择所有满足以下条件的行:

  1. group1 == 'a'
  2. group1 == 'a' & group2 == 'c'
  3. group2 == 'c'
  4. group1 in ['a','b','c']
0