【发布时间】:2016-01-12 20:26:36
【问题描述】:
我正在尝试创建一个列(“consec”),它将在另一个(“二进制”)中保持连续值的运行计数,而不使用循环。这就是期望的结果:
. binary consec
1 0 0
2 1 1
3 1 2
4 1 3
5 1 4
5 0 0
6 1 1
7 1 2
8 0 0
不过,这……
df['consec'][df['binary']==1] = df['consec'].shift(1) + df['binary']
结果...
. binary consec
0 1 NaN
1 1 1
2 1 1
3 0 0
4 1 1
5 0 0
6 1 1
7 1 1
8 1 1
9 0 0
我看到其他使用分组或排序的帖子,但不幸的是,我看不出这对我有什么用。提前感谢您的帮助。
【问题讨论】:
-
你说“连续”,但是0和1不同,你还是增加计数器。所以感觉更像是你想在每个零处重置计数器。如果连续两个零,你想发生什么?
-
好点 - 糟糕的描述,我确实想在每个零处重置计数器。所以 df['binary'] 中的连续 0 会在 df['consec'] 中生成 0。
标签: python pandas dataframe vectorization