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

如何用Pandas高效统计Symbol按CS类型的出现频次并重构DataFrame

高效生成Symbol-CS计数交叉表的最优方法

嘿,这个需求是典型的分类变量交叉计数场景,用pandas的内置工具就能简洁高效地解决,先把你的需求明确下来:

输入DataFrame示例

import pandas as pd

df = pd.DataFrame({
    'Symbol': ['A1', 'A2', 'A3', 'A2', 'A2', 'A1', 'A2'],
    'CS': ['MSI', 'MSI', 'GS', 'EBV', 'CIN', 'GS', 'MSI']
})

期望输出

MSI  EBV  CIN  GS
A1     1    0    0    1
A2     2    1    1    0
A3     0    0    0    1

最优高效实现方案

1. 推荐:使用pd.crosstab(简洁+性能最优)

pd.crosstab是pandas专门为这类交叉计数场景设计的函数,内部做了性能优化,能自动处理所有Symbol和CS的组合,缺失的组合直接填充0,一行代码就能搞定:

result = pd.crosstab(df['Symbol'], df['CS'])

这个方法在处理大数据量时优势尤其明显,它避免了手动分组转置的额外开销,内存占用也更合理。

2. 备选:groupby + unstack + 填充0

如果想手动实现计数逻辑,也可以用分组统计后转置的方式,不过需要手动指定缺失值填充0:

result = df.groupby(['Symbol', 'CS']).size().unstack(fill_value=0)

这个方法逻辑直观,但性能上略逊于pd.crosstab,因为unstack在处理大量分组时会产生更多中间计算步骤。


内容的提问来源于stack exchange,提问作者João Fernandes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:46:30