我正在使用两个专栏。第一列填充零,第二列填充布尔值。
LTVCategory
有数百万行,所以我试图找到一个有效的过程,看看第2列,每个True bool分组为第1列增加1。
column 1 column 2
0 True
0 True
0 False
0 True
0 True
0 False
0 False
0 True
非常感谢任何帮助!
答案 0 :(得分:4)
在对连续组进行矢量化操作时,通常会派上用场的一个技巧是shift-cumsum模式:
>>> c = df["column 2"]
>>> c * (c & (c != c.shift())).cumsum()
0 1
1 1
2 0
3 2
4 2
5 0
6 0
7 3
Name: column 2, dtype: int32
答案 1 :(得分:0)
df['column 3'] = (df['column 2'] & (df['column 2'].shift() != True))
df['column 4'] = df['column 3'].cumsum()
df['column 1'] = df['column 2'] * df['column 4']
print df
column 1 column 2 column 3 column 4
0 1 True True 1
1 1 True False 1
2 0 False False 1
3 2 True True 2
4 2 True False 2
5 0 False False 2
6 0 False False 2
7 3 True True 3