gpt4 book ai didi

python - group by 的值计数不显示 pandas 中 null/NA 值的计数

转载 作者:行者123 更新时间:2023-11-30 22:12:49 28 4
gpt4 key购买 nike

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

>>> 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 ?

最佳答案

一个有效的技巧是将 A 转换为字符串。

df.assign(A=df.A.astype(str)).groupby('A')['B'].value_counts()

或者,更简洁地说,

df.groupby(df.A.astype(str))['B'].value_counts()

A    B   
1.0 bad 2
good 2
2.0 bad 2
good 2
nan good 1
Name: B, dtype: int64

groupby 默认会在石斑鱼上丢弃 NaN(缺失数据),因此在 value_counts 步骤中甚至不会考虑它。

同样,您还可以考虑使用crosstab

pd.crosstab(df.A.astype(str), df.B, dropna=False).stack()

A B
1.0 bad 2
good 2
2.0 bad 2
good 2
nan bad 0
good 1
dtype: int64

这也会给你 0 计数。

关于python - group by 的值计数不显示 pandas 中 null/NA 值的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50961859/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com