我有一个如下所示的数据框
df = pd.DataFrame({'key': ['a', 'a', 'a', 'b', 'c', 'c'] , 'val' : [10, np.nan, 9 , 10, 11, 13]})
df
key val
0 a 10.0
1 a NaN
2 a 9.0
3 b 10.0
4 c 11.0
5 c 13.0
我想进行分组并转换,使得new
列的每个值都是该组均值除以该值,我可以按照以下方式完成:
df['new'] = df.groupby('key')['val'].transform(lambda g : g/g.mean())
df.new
0 1.052632
1 NaN
2 0.947368
3 1.000000
4 0.916667
5 1.083333
Name: new, dtype: float64
现在我有一个条件,如果
val
是np.nan,则new
列的值将为np.inf,应如下所示。0 1.052632
1 np.inf
2 0.947368
3 1.000000
4 0.916667
5 1.083333
Name: new, dtype: float64
换句话说,如何使用groupby和transform检查一个
val
是否为np.nan
。谢谢!