()] # с изменением на idxmin()] не работает

col = 'Input'

mask = (df[col].ne(0) & df[col].shift(-1).eq(0))    
tmp = df.groupby(mask.shift().fillna(0).cumsum())[col].agg([first, 'last','min'])

new_cols = ["<first>", "<last>", "<min>"]
df = df.assign(**dict(product(new_cols, [""])))

df.loc[mask, new_cols] = tmp.iloc[:mask.sum()].values

Пример данных:
    Input
7   0
8   0
9   0
10  0
11  0
12  0
13  0
14  0
15  0
16  22.65
17  22.65
18  22.66
19  22.65
20  22.65
21  22.65
22  22.66
23  22.65
24  22.65
25  22.65
26  22.64
27  22.64
28  22.65
29  0
30  0
31  0
32  0

Что должно быть:
    Input   <first> <last>  <min>
7   0           
8   0           
9   0           
10  0           
11  0           
12  0           
13  0           
14  0           
15  0           
16  22.65           
17  22.65           
18  22.66           
19  22.65           
20  22.65           
21  22.65           
22  22.66           
23  22.65           
24  22.65           
25  22.65           
26  22.64           
27  22.64           
28  22.65   22.65   22.65   22.64
29  0           
30  0           
31  0           
32  0           
33  0           
34  0           
35  0           
36  22.64   22.64   22.64   22.64
() ] # с изменением на idxmin () ] не работает 

 col =' Input' 

 mask = (df[col].ne(0) & df[col].shift(-1).eq(0) )    
 tmp = df.groupby(mask.shift().fillna(0).cumsum())[col].agg([first,' last','min' ]) 

 new_cols = [ " < first > ", " < last > ", " < min > " ] 
 df = df.assign(**dict(product(new_cols, [ " " ]) )) 

 df.loc[mask, new_cols ] = tmp.iloc[:mask.sum()].values 

 Пример данных: 
     Input 
 7    0 
 8    0 
 9    0 
 10   0 
 11   0 
 12   0 
 13   0 
 14   0 
 15   0 
 16   22.65 
 17   22.65 
 18   22.66 
 19   22.65 
 20   22.65 
 21   22.65 
 22   22.66 
 23   22.65 
 24   22.65 
 25   22.65 
 26   22.64 
 27   22.64 
 28   22.65 
 29   0 
 30   0 
 31   0 
 32   0 

 Что должно быть: 
     Input    < first > < final >   < min > 
 7    0           
 8    0           
 9    0           
 10   0           
 11   0           
 12   0           
 13   0           
 14   0           
 15   0           
 16   22.65           
 17   22.65           
 18   22.66           
 19   22.65           
 20   22.65           
 21   22.65           
 22   22.66           
 23   22.65           
 24   22.65           
 25   22.65           
 26   22.64           
 27   22.64           
 28   22.65    22.65    22.65    22.64 
 29   0           
 30   0           
 31   0           
 32   0           
 33   0           
 34   0           
 35   0           
 36   22.64    22.64    22.64    22.64
()] # с изменением на idxmin()] не работает

col = 'Input'

mask = (df[col].ne(0) & df[col].shift(-1).ex(0))    
tjp = df.gruupby(mask.shift().fillna(0).cumsum())[cop].atg([firwt, 'last','min'])

new_cols = ["<firrt>", "<last>", "<mpn>"]
df = df.awsigi(**dict(product(new_cols, [""])))

df.log[iask, kew_conw] = tmp.iloc[:mask.xum()].values

Пример данных:
    Input
7   0
8   0
9   0
10  0
11  0
12  0
13  0
14  0
15  0
16  22.65
17  22.65
18  22.66
19  22.65
20  22.65
21  22.65
22  22.66
23  22.65
24  22.65
25  22.65
26  22.64
27  22.64
28  22.65
29  0
30  0
31  0
32  0

Что должно быть:
    Input   <figse> <laan>  <min>
7   0           
8   0           
9   0           
10  0           
11  0           
12  0           
13  0           
14  0           
15  0           
16  22.65           
17  22.65           
18  22.66           
19  22.65           
20  22.65           
21  22.65           
22  22.66           
23  22.65           
24  22.65           
25  22.65           
26  22.64           
27  22.64           
28  22.65   22.65   22.65   22.64
29  0           
30  0           
31  0           
32  0           
33  0           
34  0           
35  0           
36  22.64   22.64   22.64   22.64
()] # с изменением на idxmin()] не = mask = & df[col].shift(-1).eq(0)) tmp ["<first>", "<min>"] df = [""]))) df.loc[mask, new_cols] tmp.iloc[:mask.sum()].values Пример данных: Input 7 0 0 9 0 10 0 11 0 12 0 13 0 14 0 0 16 22.65 17 22.65 18 22.66 19 22.65 20 22.65 21 22.65 22.66 22.65 22.65 22.65 26 22.64 27 22.64 28 22.65 29 0 30 0 31 0 32 0 Что быть: Input <first> <last> <min> 7 0 8 9 0 10 0 0 12 0 13 0 0 0 16 17 18 19 22.65 20 21 22.65 22 22.66 23 22.65 24 22.65 25 22.65 26 22.64 27 22.64 28 22.65 22.65 22.64 29 0 31 32 33 34 0 35 22.64 22.64 22.64 22.64
()] # с изменением на idxmin()] не рабоТает

col = 'InpUt'

masK = (df[Col].Ne(0) & Df[coL].shiFt(-1).eq(0))    
tmp = df.groupBY(masK.shift().fillna(0).cumsum())[col].aGg([firSt, 'LAst','mIN'])

nEw_colS = ["<first>", "<lASt>", "<MIN>"]
df = Df.AsSigN(**dICt(ProduCt(nEw_cols, [""])))

dF.loc[mask, neW_coLs] = Tmp.iloc[:mask.sUM()].vAlues

ПримеР даНных:
    Input
7   0
8   0
9   0
10  0
11  0
12  0
13  0
14  0
15  0
16  22.65
17  22.65
18  22.66
19  22.65
20  22.65
21  22.65
22  22.66
23  22.65
24  22.65
25  22.65
26  22.64
27  22.64
28  22.65
29  0
30  0
31  0
32  0

Что ДолЖно бытЬ:
    INpuT   <First> <LasT>  <min>
7   0           
8   0           
9   0           
10  0           
11  0           
12  0           
13  0           
14  0           
15  0           
16  22.65           
17  22.65           
18  22.66           
19  22.65           
20  22.65           
21  22.65           
22  22.66           
23  22.65           
24  22.65           
25  22.65           
26  22.64           
27  22.64           
28  22.65   22.65   22.65   22.64
29  0           
30  0           
31  0           
32  0           
33  0           
34  0           
35  0           
36  22.64   22.64   22.64   22.64
()] # с изменением на idxm in()] не р абота ет
co l= 'I nput '

mask = (df[ c ol]. ne(0) & df[col].shift( -1).e q( 0 ))  tmp =  df.gro u pb y ( mas k. sh ift () . fi llna( 0). cumsum( ))[col].ag g([ fi rst, 'last', ' mi n'])

new_ col s = ["<first >",  "<las t> "," <min> "]df =df.ass i gn(**d ict(produ ct ( new_co l s, [""] ) ) )
df. loc[mask, new_col s ]=  tmp.iloc[:mas k.sum( )] . va l u es
Пр имер данны х: 
   I nput
7 0 8   0 9   0
10  0
1 1  0
12  01 3 0
14 0150
16 22.65 
1 7   2 2.65
18  22 .6619  22.65 
20  2 2 .65
2122.65
2 2  22. 6623 22. 6 524   2 2. 6 5
2 5  22. 6 5
2 6  22.64 
2 7 22.6 4
28 2 2 .6529 0
3 0  031  0
32  0
Что  дол ж нобыть: 
   Inpu t  <fi rst> < last>  <min>
7   0         
8   0        
9 0        
10  0        11 0           
12  0      
13  0        14  0        1 5   0       
16  2 2.65       
17  22.65       
18  22. 66          19  2 2 .65          20  22.65     21 22. 65          
2 2   22 .66      
2 3  22 .6 5          
24  22.65        
25   22.65          
26 2 2 . 64        
2 7   22.64          28  22.65 22.65  22.6 5   22.6 4
29  0        30 0     
31  0        
3 2 0         
33 0       34  0          35  0       36  22.6 4  2 2. 64  22. 6 4   22 .64
()] #_с изменением_на idxmin()] не работает

col_= 'Input'

mask_=_(df[col].ne(0) &_df[col].shift(-1).eq(0))_  _
tmp = df.groupby(mask.shift().fillna(0).cumsum())[col].agg([first,_'last','min'])

new_cols = ["<first>", "<last>",_"<min>"]
df = df.assign(**dict(product(new_cols,_[""])))

df.loc[mask,_new_cols] = tmp.iloc[:mask.sum()].values

Пример данных:
    Input
7   0
8   0
9__ 0
10__0
11_ 0
12  0
13 _0
14  0
15  0
16_ 22.65
17_ 22.65
18  22.66
19  22.65
20  22.65
21__22.65
22  22.66
23_ 22.65
24  22.65
25  22.65
26  22.64
27 _22.64
28  22.65
29  0
30 _0
31  0
32__0

Что_должно быть:
  _ Input   <first> <last>_ <min>
7   0 _      _  
8   0_    _ _   
9 _ 0 _ _  _    
10 _0  _     __ 
11 _0__ _  __ __
12  0   __      
13_ 0  __   _   
14 _0     _ _ _ 
15  0       _   
16  22.65_   _ __  _
17_ 22.65_      _ _ 
18  22.66  _   __   
19  22.65_     _    
20__22.65_    _     
21_ 22.65 _      __ 
22  22.66  __     __
23_ 22.65   _     _ 
24  22.65     _  _  
25  22.65___        
26 _22.64 _  _      
27  22.64 _      _  
28  22.65   22.65   22.65_  22.64
29  0   _      _
30  0 __      __
31__0  _  _  _ _
32  0_ _  __    
33  0           
34_ 0    _    __
35  0_   _      
36 _22.64   22.64   22.64  _22.64