标题复杂,但问题很简单。我有一个具有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')
似乎您需要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] 删除。
我来说两句