请考虑任何不使用 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
答案 0 :(得分:2)
从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