每次不同的列具有True bool组时,向列添加数字

时间:2016-05-16 17:07:59

标签: python pandas

我正在使用两个专栏。第一列填充零,第二列填充布尔值。

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

非常感谢任何帮助!

2 个答案:

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