2015-09-29 79 views
2

我有一个很大的数据帧,我只需要创建一个新的数据帧,其中一个索引与另一个索引是连续的。 例如:在熊猫中过滤连续索引

import pandas as pd 
import numpy as np 
indexer = [0,1,3,5,6,8,10,12,13,17,18,20,22,24,25,26] 
df = pd.DataFrame(range(50,66), index=indexer, columns = ['A']) 

因此,在这种情况下所需的输出是:

 A 
0 50 
1 51 
5 53 
6 54 
12 57 
13 58 
17 59 
18 60 
24 63 
25 64 
26 65 

是否有大熊猫做这件事的快速方法?或者需要在每一行上使用某种循环和函数来完成它?

回答

3

你不能移动索引,所以你首先需要重置它。然后使用loc操作并同时测试上下一个班次。请记住将您的索引设置回原来的位置。

df.reset_index(inplace=True) 
>>> df.loc[(df['index'] == df['index'].shift(1) + 1) 
      | (df['index'] == df['index'].shift(-1) - 1), :].set_index('index') 
     A 
index  
0  50 
1  51 
5  53 
6  54 
12  57 
13  58 
17  59 
18  60 
24  63 
25  64 
26  65 
+0

很好的答案。谢谢! – Gabriel