【发布时间】:2014-05-24 02:23:04
【问题描述】:
受this answer 的启发以及this question 缺乏简单答案的启发,我发现自己编写了一些语法糖,以使生活更容易按MultiIndex 级别过滤。
def _filter_series(x, level_name, filter_by):
"""
Filter a pd.Series or pd.DataFrame x by `filter_by` on the MultiIndex level
`level_name`
Uses `pd.Index.get_level_values()` in the background. `filter_by` is either
a string or an iterable.
"""
if isinstance(x, pd.Series) or isinstance(x, pd.DataFrame):
if type(filter_by) is str:
filter_by = [filter_by]
index = x.index.get_level_values(level_name).isin(filter_by)
return x[index]
else:
print "Not a pandas object"
但如果我了解 pandas 开发团队(而且我开始慢慢了解了!)已经有一个很好的方法可以做到这一点,但我还不知道它是什么!
我说的对吗?
【问题讨论】:
-
如果您有兴趣了解更多关于切片和过滤多索引数据帧的信息,请查看我的帖子:How do I slice or filter MultiIndex DataFrame levels?。谢谢!