如何让Pandas的value_counts()将含NaN的ColA类别计数设为0?
问题描述
我有如下Pandas数据集:
| ColA | ColB |
|---|---|
| A | 01 |
| A | 02 |
| B | 03 |
| B | 04 |
| C | 05 |
| D | NaN |
执行代码 df.ColA.value_counts() 后,得到结果:
| ColA | |
|---|---|
| A | 2 |
| B | 2 |
| C | 1 |
| D | 1 |
现在需要实现让D的计数变为0,得到如下结果:
| ColA | |
|---|---|
| A | 2 |
| B | 2 |
| C | 1 |
| D | 0 |
解决方案
核心逻辑是仅统计ColB不为空的行中ColA的出现次数,同时保留原始ColA的所有类别,无匹配项的补0。以下是两种可行方法:
方法1:使用groupby+count结合reindex补全类别
# 按ColA分组统计ColB非空的数量,再用reindex补全所有ColA的唯一值,缺失项填0 result = df.groupby('ColA')['ColB'].count().reindex(df['ColA'].unique(), fill_value=0)
方法2:过滤非空行后用value_counts+reindex补全
# 先过滤ColB不为空的行,统计ColA的出现次数,再补全所有ColA的唯一值 result = df[df['ColB'].notna()]['ColA'].value_counts().reindex(df['ColA'].unique(), fill_value=0)
内容的提问来源于stack exchange,提问作者akkii
相关产品推荐
相关产品推荐

