如何计算按 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
如果你愿意,你可以 groupby
和 mask
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
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
如果你愿意,你可以 groupby
和 mask
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