Python group by上的值计数不显示组中null/NA值的计数

Python group by上的值计数不显示组中null/NA值的计数,python,pandas,Python,Pandas,我有一个像这样的数据框- >>> df A B 0 1.0 good 1 2.0 good 2 1.0 good 3 2.0 good 4 1.0 bad 5 1.0 bad 6 2.0 bad 7 2.0 bad 8 NaN good 我想根据A列中的不同值获得B列值的计数。因此我使用groupby,如下所示,并得到结果- >>> df.groupby('A')['B'].value_count

我有一个像这样的数据框-

>>> df
     A     B
0  1.0  good
1  2.0  good
2  1.0  good
3  2.0  good
4  1.0   bad
5  1.0   bad
6  2.0   bad
7  2.0   bad
8  NaN  good
我想根据A列中的不同值获得B列值的计数。因此我使用groupby,如下所示,并得到结果-

>>> df.groupby('A')['B'].value_counts()
A    B   
1.0  bad     2
     good    2
2.0  bad     2
     good    2
Name: B, dtype: int64
但它并没有在A列中显示nan值的计数。我真正想要的是也显示nan的计数-

A    B   
1.0  bad     2
     good    2
2.0  bad     2
     good    2
NaN  good    1
Name: B, dtype: int64
我甚至尝试使用dropna=False,但它也没有显示预期的结果。 有谁能告诉我如何让NaN也参与到结果中来吗?

一个有效的方法是对字符串进行转换

df.assign(A=df.A.astype(str)).groupby('A')['B'].value_counts()
或者更简单地说

df.groupby(df.A.astype(str))['B'].value_counts()
默认情况下,groupby会在grouper上删除丢失的NAN数据,因此在value_counts步骤中甚至不会考虑该数据

沿着同一行,您也可以考虑使用交叉表。

这也会给你0个计数。

一个有效的方法是向字符串施放一个

df.assign(A=df.A.astype(str)).groupby('A')['B'].value_counts()
或者更简单地说

df.groupby(df.A.astype(str))['B'].value_counts()
默认情况下,groupby会在grouper上删除丢失的NAN数据,因此在value_counts步骤中甚至不会考虑该数据

沿着同一行,您也可以考虑使用交叉表。


它还提供0个计数。

为什么要指定何时可以将其作为grouper传递,即df.groupbydf.a.astypestr['B'].value_counts@Dark通常,在自定义grouper上进行分组比在现有列上进行分组慢3倍。我考虑过这一点,并决定使用更高性能的选项,但我想指定这两个选项并让OP选择并没有什么坏处。为什么要指定何时可以将其作为grouper传递,即df.groupbydf.a.astypestr['B'].value_counts@Dark通常,在自定义grouper上进行分组比在现有列上进行分组慢3倍。我考虑过这一点,并决定使用更高性能的选项,但我想指定这两个选项并让OP选择并没有什么坏处。