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选择并没有什么坏处。