如何计算按 ID 分组的累积缺失值(在 python 中)?

How to calculate cumulative missing values group by an ID (in python)?

a) 给定以下“id”和“freq”

df = pd.DataFrame({'id':[1,1,1,1,1,1,2,2,2,2,2,3,3,3],'freq':[1,2,np.NaN, np.NaN, np.NaN, 6,7,8,9,10,np.NaN,np.NaN,13,14]})

df

b) 如何根据“id”计算“freq”组的累积缺失?当 freq > 0

时重置为零

所以结果 'cum_null' 应该看起来像 - 打印(df(['cum_null']) 0 0 1 2 3 0 0 0 0 0 1 1 0 0

c) 我试过了。非常接近,但当 freq > 0

时无法重置为零
df['cum_null'] = id_grp['freq'].apply(lambda x:x.isnull().astype(int).cumsum())

df

如果你愿意,你可以 groupbymask

df['cum_null'] = df.freq.isnull().groupby(df['id']).cumsum().where(df.freq.isnull(),0)
0     0
1     0
2     1
3     2
4     3
5     0
6     0
7     0
8     0
9     0
10    1
11    1
12    0
13    0
Name: freq, dtype: int64