Home > Mobile >  I have a dataframe where some index number are missing how do I cut dataframe previous to that missi
I have a dataframe where some index number are missing how do I cut dataframe previous to that missi

Time:09-09

[enter image description here][1]

Index number 72 is missing from original dataframe which is shown in image. I want to cut dataframe like [0:71,:] with condition like when index sequence breaks then dataframe automatically cuts from previous index value.

CodePudding user response:

Compare shifted values of index subtracted by original values if greater like 1 with invert ordering by [::-1] and Series.cummax, last filter in 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

CodePudding user response:

i came to this:

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
  • Related