[在此处输入图像描述][1]
索引号72在原始数据帧中丢失,如图所示。我想剪切像[0:71,:]这样的数据帧,条件是当索引序列中断时,数据帧会自动从以前的索引值中剪切。
比较索引的移位值减去原始值(如果更像1
(与[::-1]
和Series.cummax
的反向排序,boolean indexing
中的最后一个滤波器:
df = pd.DataFrame({'a': range(3,13)}).drop(3)
print (df)
a
0 3
1 4
2 5
4 7
5 8
6 9
7 10
8 11
9 12
df = df[df.index.to_series().shift(-1, fill_value=0).sub(df.index).gt(1)[::-1].cummax()]
print (df)
a
0 3
1 4
2 5
我想到了这个:
df = pd.DataFrame({'col':[1,2,3,4,5,6,7,8,9]}, index=[-1,0,1,2,3,4,5,7,8])
ind = next((i for i in range(len(df)-1) if df.index[i]+1!=df.index[i+1]),len(df))+1
>>> df.iloc[:ind]
'''
col
-1 1
0 2
1 3
2 4
3 5
4 6
5 7
使用numpy,获取从第一个索引到第一个不匹配(排除(的等于正常范围的值:
df[np.minimum.accumulate(df.index==np.arange(df.index[0], df.index[0]+len(df)))]
示例:
col
-1 1
0 2
1 3
3 4
4 5
输出:
col
-1 1
0 2
1 3