当计数为零时熊猫 groupby 以及如何在结果中包含零值
Posted
技术标签:
【中文标题】当计数为零时熊猫 groupby 以及如何在结果中包含零值【英文标题】:pandas groupby when count is zero and how to include zero value in result 【发布时间】:2019-12-26 19:18:27 【问题描述】:请考虑任何不使用 pivot_table() 或 unstack()
的解决方案对于以下数据框:
import pandas as pd
df = pd.DataFrame(
'name': ['Mason', 'Ali', 'Si', 'Pedram'],
'continent': ['Europe', 'Asia', 'Asia', 'Asia'],
'blood_type': ['AB', 'O+', 'AB', 'AB']
)
这是:
name continent blood_type
0 Mason Europe AB
1 Ali Asia O+
2 Si Asia AB
3 Pedram Asia AB
以下分组计数:
df.groupby(['continent', 'blood_type']).count()
将产生:
name
continent blood_type
Asia AB 2
O+ 1
Europe AB 1
相反,我怎样才能像下表一样包含零值计数? (不使用 pivot_table 或 unstack)
name
continent blood_type
Asia AB 2
O+ 1
Europe AB 1
O+ 0
【问题讨论】:
纯熊猫是什么意思? pivot 和 unstack 是 pandas 方法 好的,对。为了避免任何混淆,我删除了“纯熊猫”。我不想使用 unstack stack 方法。有什么建议吗? 【参考方案1】:截至pandas
0.25(或 0.24.2,现在不确定),如果您按类别 (pd.Categorical
) 分组,它将显示最终计数中的所有值。
df.groupby([pd.Categorical(df.continent), 'blood_type']).count().fillna(0)
name continent
blood_type
Asia AB 2.0 2.0
O+ 1.0 1.0
Europe AB 1.0 1.0
O+ 0.0 0.0
【讨论】:
嗨,它确实适用于 0.24.2,但它确实返回 NaN,这无论如何都很好。谢谢。 @pedrum 看看最后的fillna(0)
;p以上是关于当计数为零时熊猫 groupby 以及如何在结果中包含零值的主要内容,如果未能解决你的问题,请参考以下文章