通过根据MultiIndex级别更改的值对列进行过滤

拉斯凯特

标题复杂,但问题很简单。我有一个具有MultiIndex的DataFrame:

在此处输入图片说明

我想要上面框架的行,但'Filter Column'必须大于或等于filter_value以下系列中的值

filter_value = Series([1, 3], ['red', 'blue'])

这个玩具问题的正确解决方案是相同的数据帧,但只用了(red, 2)(blue, 2)(blue, 3)行离开。

要为上述框架设置:

arrays = [['red', 'red', 'blue', 'blue', 'blue'], [1, 2, 1, 2, 3]]
idx = MultiIndex.from_arrays(arrays, names=['Color', 'Count'])

values = Series(2, idx, name='Value')
ratios = Series(range(5), idx, name='Filter Column')
df = concat([values, ratios], axis='columns')
BEN_YO

似乎您需要get_level_values+ map,然后使用值比较获取布尔过滤器df

df[df['Filter Column'].values>=df.index.get_level_values(0).map(filter_value)]
Out[108]: 
             Value  Filter Column
Color Count                      
red   2          2              1
blue  2          2              3
      3          2              4

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章