Python2:pandas groupby获得每组中NaN的比例

时间:2017-12-21 00:18:49

标签: python-2.7 pandas

我有一个包含组列和值列的数据框:

df = pd.DataFrame({'group': ['CA', 'WA', 'CO', 'AZ', 'MA'] * 10,
                   'value': pd.Series(range(5) + [np.nan]).sample(50, replace=True)})

如何在组列中使用groupby来获取值列中NaN的比例?

2 个答案:

答案 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)

使用sizecount

的差异
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