Q:

Проиндексировать единицы в датафрейме, но не считать нули

Есть DataFrame, в котором записаны нули и единицы, 
df = pd.DataFrame({'A': [0,0,1,1,1,0,1]})

   A
0  0
1  0
2  1
3  1
4  1
5  0
6  1

Необходимо пронумеровать только 1, а 0 оставить без изменения, т.е. должны получить:
   A
0  0
1  0
2  1
3  2
4  3
5  0
6  1

A:

In [186]: df.groupby(df['A'].diff().ne(0).cumsum()).cumsum()
Out[186]:
   A
0  0
1  0
2  1
3  2
4  3
5  0
6  1

Пошагово:
разница между текущей и предыдущей строкой:
In [2]: df['A'].diff()
Out[2]:
0    NaN
1    0.0
2    1.0
3    0.0
4    0.0
5   -1.0
6    1.0
Name: A, dtype: float64

сравниваем значения из шага [2] с 0:
In [3]: df['A'].diff().ne(0)
Out[3]:
0     True
1    False
2     True
3    False
4    False
5     True
6     True
Name: A, dtype: bool

кумулятивно суммируем то что получилось на предыдущем шаге [3] (в Python - False == 0, True == 1):
In [4]: df['A'].diff().ne(0).cumsum()
Out[4]:
0    1
1    1
2    2
3    2
4    2
5    3
6    4
Name: A, dtype: int32

дальше группируем по значениям из шага [4] и считаем кумулятивную сумму:
In [8]: df.groupby(df['A'].diff().ne(0).cumsum()).cumsum()
Out[8]:
   A
0  0
1  0
2  1
3  2
4  3
5  0
6  1

