【发布时间】:2014-03-20 21:34:57
【问题描述】:
我迷失在 ix、xs、MultiIndex、get_level_values 和其他 Pandas 的海洋中。
我有一个具有 3 级多索引的系列。根据不同级别的值对我的系列进行切片的有效方法是什么?
我的系列看起来像这样:
days id start_date
0 S0036-4665(00)04200108 2013-05-18 1
3 S0036-4665(00)04200108 2013-05-18 1
5 S0036-4665(00)04200108 2013-05-18 3
13 S0036-4665(00)04200108 2013-05-18 1
19 S0036-4665(00)04200108 2013-05-18 1
39 S0036-4665(00)04200108 2013-05-18 1
...
很明显,id 和 start_date 的值会随着你的声名鹊起而变化
我希望能够根据以下内容进行切片: - 数字范围内的天数 - 特定集合内的 id - start_date 在特定日期范围内
到目前为止,我找到了this solution,它建议使用df[df.index.get_level_values('a').isin([5, 7, 10, 13])],我发现我可以这样做:
s.select(lambda x: x[0] < 20 and (x[1] in set('some id', 'other id') ))
其中任何一个都是最好的解决方案吗?我觉得应该可以用xs,或者ix来做点什么,但是前者好像只让你按特定值过滤,而后者只对序列中的位置进行索引?
【问题讨论】:
-
我刚刚发现了这个问题,可能会提供答案。但仍然想了解什么是有效的方法(这是一个非常大的数据集,大约 1M 行)stackoverflow.com/questions/17921010/…
-
尝试使用master,这已经在:pandas-docs.github.io/pandas-docs-travis/…;有兴趣听到一些反馈
-
不错。是否可以传递一系列值?这些示例使用值列表。