我有一个很大的数据帧,我需要创建一个新的数据帧,只有一个索引连续到另一个索引的数据。 例如:
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
在熊猫中有没有快速的方法?或者需要在每一行上使用某种循环和函数来完成它?
答案 0 :(得分: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