我有一个包含组列和值列的数据框:
df = pd.DataFrame({'group': ['CA', 'WA', 'CO', 'AZ', 'MA'] * 10,
'value': pd.Series(range(5) + [np.nan]).sample(50, replace=True)})
如何在组列中使用groupby
来获取值列中NaN的比例?
答案 0 :(得分:2)
以下内容应该:
df.groupby('group').apply(lambda x: x.value.isnull().sum()/len(x))
这里的关键是使用Series对象的.isnull
方法获取NaN
的行,然后进行简单的比例计算以获得所需的输出。
group
AZ 0.3
CA 0.1
CO 0.1
MA 0.1
WA 0.1
dtype: float6
我希望这证明是有帮助的。
答案 1 :(得分:1)
使用size
和count
g=df.groupby('group').value
i=g.count()
j=g.size()
(j-i).div(j,0)
Out[489]:
group
AZ 0.3
CA 0.1
CO 0.0
MA 0.2
WA 0.2
Name: value, dtype: float64