Python Groupby和cumcount仅适用于有效行

Python Groupby和cumcount仅适用于有效行,python,pandas,dataframe,group-by,pandas-groupby,Python,Pandas,Dataframe,Group By,Pandas Groupby,我有一个如下所示的数据帧: ids valid date 0 1 False 2012-06-10 1 1 True 2012-07-11 2 1 True 2012-09-20 3 2 False 2012-01-12 4 2 True 2012-07-11 5 3 True 2012-03-09 6 3 True 2012-07-11 7

我有一个如下所示的数据帧:

    ids    valid        date
0    1     False  2012-06-10
1    1     True   2012-07-11
2    1     True   2012-09-20
3    2     False  2012-01-12
4    2     True   2012-07-11
5    3     True   2012-03-09
6    3     True   2012-07-11
7    3     False  2012-12-09
8    4     False  2012-07-11    
我想数一数这个人到目前为止有多少个有效案例,并按升序排列

ids              valid           date         occur
 1               False        2012-06-10         0
 1               True         2012-07-11         1
 1               True         2012-09-20         2
 2               False        2012-01-12         0
 2               True         2012-07-11         1
 3               True         2012-03-09         1
 3               True         2012-07-11         2
 3               False        2012-12-09         0
 4               False        2012-07-11         0
到目前为止,我所尝试的:

df = df.sort_values(['id', 'date'])
df['occur'] = df.groupby('valid').cumcount()+1

使用
groupby
cumcount

df['occur'] = (df.groupby(['ids', 'valid'])
                 .cumcount()
                 .add(1)
                 .where(df.valid, 0))
print(df)
   ids  valid        date  occur
0    1  False  2012-06-10      0
1    1   True  2012-07-11      1
2    1   True  2012-09-20      2
3    2  False  2012-01-12      0
4    2   True  2012-07-11      1
5    3   True  2012-03-09      1
6    3   True  2012-07-11      2
7    3  False  2012-12-09      0
8    4  False  2012-07-11      0

输入中的“valid”是整数,但输出中的“valid”是布尔值?这是如何工作的?@coldspeed我将列乘以1以从true False转换为true False,这并不能解释第2行中1*1=False的原因。进行编辑以更正错误我的问题是,如果所有行都大于0,怎么可能出现任何错误值?