假设我有一个像这样的熊猫系列:
import pandas as pd
pd.Series([1, 0, 0, 1, 0, 0, 0], name='series')
如何添加自最后一个> 0以来的行数的列,如下所示:
pd.DataFrame({
'series': [1, 0, 0, 1, 0, 0, 0],
'row_num': [0, 1, 2, 0, 1, 2, 3]
})
答案 0 :(得分:6)
尝试一下:
s.groupby(s.cumsum()).cumcount()
输出:
0 0
1 1
2 2
3 0
4 1
5 2
6 3
dtype: int64
答案 1 :(得分:1)
i = np.flatnonzero(s)
n = len(s)
delta = np.diff(np.append(i, n))
r = np.arange(n)
r - r[i].repeat(delta)
array([0, 1, 2, 0, 1, 2, 3])