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

如何使用Pandas按ID分组统计各融资类型唯一值的出现次数

实现方案

你需要的是按公司维度统计各融资类型的出现次数,属于透视计数需求,两种可直接落地的实现方法如下:

前置说明

假设你的原始数据每行对应一条融资记录,至少包含company id、融资类型(示例列名取为financing_type)两个字段,示例原始数据构造代码如下:

import pandas as pd

# 模拟和你输入表格结构一致的原始数据
df = pd.DataFrame({
    'company id': [1,1,1,1,1,2,2,2],
    'financing_type': ['Equity','Equity','Debt','Debt','Debt','Debt','Private Placement','Private Placement']
})

方法1:使用pd.crosstab(最简实现)

pd.crosstab是专门用于统计分组频率的接口,一行代码即可得到结果:

# 统计公司id和融资类型的交叉计数
result = pd.crosstab(df['company id'], df['financing_type']).reset_index()

# 可选:如果需要严格固定输出列的顺序、补全原始数据中未出现的融资类型,新增reindex逻辑
required_columns = ['company id', 'Equity', 'Debt', 'Private Placement']
result = result.reindex(columns=required_columns, fill_value=0)

方法2:使用groupby+unstack组合(适配你之前的尝试思路)

你之前尝试没得到预期结果,大概率是分组计数后没有处理空缺分类,或者透视轴配置错误,正确写法如下:

# 按公司id、融资类型分组计数,再把融资类型列转为表头,空缺值自动填0
result = df.groupby(['company id', 'financing_type'])\
           .size()\
           .unstack(fill_value=0)\
           .reset_index()

# 同样可以用reindex固定输出列结构
required_columns = ['company id', 'Equity', 'Debt', 'Private Placement']
result = result.reindex(columns=required_columns, fill_value=0)

两种方法最终输出的结果均符合你的要求:

company id  Equity  Debt  Private Placement
0           1       2     3                  0
1           2       0     1                  2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:06:03