python中multiindex如何索引_python – 如何使用另一个的MultiIndex切片一个MultiIndex DataFrame...

这是一个获得这个片段的方法:

df.sort_index(inplace=True)

idx = pd.IndexSlice

df.loc[idx[:, ('foo','bar'), 'can'], :]

生产

hi

a b c

1 bar can 3

foo can 1

2 bar can 7

foo can 5

3 bar can 11

foo can 9

请注意,您可能需要对MultiIndex进行排序,然后才能进行分割.那么大熊猫很好,可以警告你是否需要这样做:

KeyError: 'MultiIndex Slicing requires the index to be fully lexsorted tuple len (3), lexsort depth (1)'

您可以阅读更多关于如何在docs中使用切片机

如果由于某种原因使用切片器不是一个选项,这里是使用.isin()方法获取相同切片的一种方法:

df[df.index.get_level_values('b').isin(ix_use.get_level_values(0)) & df.index.get_level_values('c').isin(ix_use.get_level_values(1))]

这显然不是那么简洁.

更新:

由于您在此更新的条件是一种方式:

cond1 = (df.index.get_level_values('b').isin(['foo'])) & (df.index.get_level_values('c').isin(['can']))

cond2 = (df.index.get_level_values('b').isin(['bar'])) & (df.index.get_level_values('c').isin(['baz']))

df[cond1 | cond2]

生产:

hi

a b c

1 foo can 1

bar baz 2

2 foo can 5

bar baz 6

3 foo can 9

bar baz 10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值