【发布时间】:2018-02-22 16:14:59
【问题描述】:
假设我有一个像这样的 Pandas 系列布尔值。
vals = pd.Series([0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1]).astype(bool)
>>> vals
0 False
1 False
2 False
3 True
4 True
5 True
6 True
7 False
8 False
9 True
10 True
11 False
12 True
13 True
14 True
dtype: bool
我想把这个布尔系列变成一个系列,其中每组 1 都被正确枚举,就像这样
0 0
1 0
2 0
3 1
4 1
5 1
6 1
7 0
8 0
9 2
10 2
11 0
12 3
13 3
14 3
我怎样才能有效地做到这一点?
我已经能够手动执行此操作,在 Python 级别上循环序列并递增,但这显然很慢。我正在寻找一个矢量化的解决方案——我看到this answer from unutbu 涉及在 NumPy 中拆分增加的组,并试图让它与某种cumsum 一起工作,但到目前为止还没有成功。
【问题讨论】:
标签: python pandas numpy series