You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DataFrame两类组合的计数结果填充至指定结构的DataFrame?

将分组计数结果转为指定结构的DataFrame

方法1:对分组结果使用unstack()

先通过groupby获取带分层索引的计数值,再用unstack()将二级索引转为列,同时可指定fill_value填充缺失的组合(比如填充0):

# 获取分组计数的分层索引Series
count_series = df.groupby(['type1', 'type2'])['data'].count()

# 转换为目标结构的DataFrame,缺失组合填充为0
m_df = count_series.unstack(fill_value=0)

以你提供的简化示例为例,执行后得到的m_df如下:

type2     female  male
type1                 
bunny          1     0
chicken        0     1
cow            1     1
elephant       0     1
pig            1     1

如果需要严格匹配你预先排序好的grp1和grp2,可以追加reindex步骤对齐索引和列:

grp1 = sorted(df['type1'].unique())
grp2 = sorted(df['type2'].unique())
m_df = count_series.unstack(fill_value=0).reindex(index=grp1, columns=grp2)

方法2:直接使用pivot_table()一步生成

无需先执行groupby,用pivot_table直接指定行、列、聚合规则,一步得到目标结构:

m_df = df.pivot_table(
    index='type1',    # 行对应type1
    columns='type2',  # 列对应type2
    values='data',    # 用于计数的字段
    aggfunc='count',  # 聚合方式为计数
    fill_value=0      # 缺失组合填充为0
)

该方法结果与方法1完全一致,代码更简洁。


内容的提问来源于stack exchange,提问作者Baaridi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:46:06