熊猫-自上次大于0以来的行数

时间:2019-07-08 21:47:41

标签: python pandas indexing

假设我有一个像这样的熊猫系列:

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]
})

2 个答案:

答案 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)

脾气暴躁

  • 查找序列/数组大于0的位置
  • 计算一个地方到另一个地方的差异
  • 从序列中减去这些值

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])