【问题标题】:Pandas: Selection with MultiIndexPandas:使用 MultiIndex 进行选择
【发布时间】:2012-11-13 02:41:12
【问题描述】:

考虑以下DataFrames

In [136]:
df = pd.DataFrame({'A':[1,1,2,2],'B':[1,2,1,2],'C':np.arange(10,30,5)}).set_index(['A','B'])
df
Out[136]:
      C
A B    
1 1  10
  2  15
2 1  20
  2  25

In [130]:
vals = pd.DataFrame({'A':[1,2],'values':[True,False]}).set_index('A')
vals
Out[130]:
  values
A       
1   True
2  False

我怎样才能只选择df 的行以及vals 中对应的True 值?

如果我在两个帧上都reset_index,我现在可以合并/加入它们并按照我的意愿进行切片,但是我如何使用(多)索引来做到这一点?

【问题讨论】:

  • 您能澄清一下“仅选择df 的行以及vals 中对应的True 值”是什么意思吗?我不太明白你想要达到的目标。

标签: python pandas


【解决方案1】:

布尔索引一路...

In [65]: df[pd.Series(df.index.get_level_values('A')).isin(vals[vals['values']].index)]
Out[65]: 
      C
A B    
1 1  10
  2  15

请注意,您可以在多索引上使用 xs。

In [66]: df.xs(1)
Out[66]: 
    C
B    
1  10
2  15

【讨论】:

    猜你喜欢
    • 2017-08-10
    • 2018-12-04
    • 1970-01-01
    • 2019-05-24
    • 2015-04-26
    • 1970-01-01
    相关资源
    最近更新 更多