根据另一特定列,显示特定列的缺失值

4
我可以为您进行翻译。以下是需要翻译的文本:

这是我的问题。

假设我有一个数据框,其中有两列,看起来像这样:

 Type   | Killed
_______ |________
 Dog        1
 Dog       nan
 Dog       nan
 Cat        4
 Cat       nan
 Cow        1
 Cow       nan

我希望能够根据类型显示所有Killed中的缺失值,并对其进行计数。
我的期望结果应该类似于这样:
Type | Sum(isnull)
Dog       2
Cat       1
Cow       1

有没有办法显示这个?
2个回答

3
你可以使用布尔索引value_counts
print (df.ix[df.Killed.isnull(), 'Type'].value_counts().reset_index(name='Sum(isnull)'))

  index  Sum(isnull)
0   Dog            2
1   Cow            1
2   Cat            1

或者聚合size,这似乎更快:

print (df[df.Killed.isnull()]
            .groupby('Type')['Killed']
            .size()
            .reset_index(name='Sum(isnull)'))

  Type  Sum(isnull)
0  Cat           1
1  Cow           1
2  Dog           2

时间

df = pd.concat([df]*1000).reset_index(drop=True)

In [30]: %timeit (df.ix[df.Killed.isnull(), 'Type'].value_counts().reset_index(name='Sum(isnull)'))
100 loops, best of 3: 5.36 ms per loop

In [31]: %timeit (df[df.Killed.isnull()].groupby('Type')['Killed'].size().reset_index(name='Sum(isnull)'))
100 loops, best of 3: 2.02 ms per loop

1

我可以为你获取 isnullnotnull 两者

isnull = np.where(df.Killed.isnull(), 'isnull', 'notnull')
df.groupby([df.Type, isnull]).size().unstack()

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接