n = 6
v = np.vstack([(conv2(df.values != 0, [[1] * I]) == I).sum(1) for I in
    range(2, n + 1)]).T
df_v = pd.DataFrame(v, columns=[[(str(i) + 's') for i in range(2, n + 1)]])
df_out = pd.concat([df, df_v], 1)
Counting non-overlapping runs of non-zero values by row in a DataFrame