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

如何按Name分组统计type列outgoing与incoming数量并分两列展示

问题描述

我有一张包含name和type列的表格,type列仅包含outgoing和incoming两个值。需要按name分组,将每个name对应的outgoing和incoming数量分别展示为独立列,实现如下统计效果:

原始表格

nametype
Aoutgoing
Bincoming
Bincoming
Boutgoing
Cincoming
Bincoming
Aoutgoing

预期结果

Namecount Outgoingcount incoming
A20
B13
C01

解决方法

方法1:Excel数据透视表实现

  1. 选中原始表格数据区域,点击菜单栏插入 → 数据透视表
  2. 在透视表字段面板中:
    • 将name拖至行区域
    • 将type拖至列区域
    • 将type(或任意字段)拖至值区域,设置值汇总方式为计数
  3. 生成透视表后,将空白单元格用Ctrl+H批量替换为0
  4. 调整列标题为预期的count Outgoing和count incoming即可

方法2:Python Pandas代码实现

import pandas as pd

# 构造原始数据
df = pd.DataFrame({
    'name': ['A', 'B', 'B', 'B', 'C', 'B', 'A'],
    'type': ['outgoing', 'incoming', 'incoming', 'outgoing', 'incoming', 'incoming', 'outgoing']
})

# 生成交叉统计表格,填充缺失值为0
result = pd.crosstab(df['name'], df['type']).fillna(0).astype(int)
# 重命名列名并调整顺序
result.columns = ['count incoming', 'count Outgoing']
result = result[['count Outgoing', 'count incoming']].reset_index().rename(columns={'name': 'Name'})

print(result)

运行后将直接输出与预期一致的统计结果。

方法3:SQL语句实现

假设原始表名为traffic,使用条件聚合即可完成统计:

SELECT
    name AS Name,
    COUNT(CASE WHEN type = 'outgoing' THEN 1 END) AS `count Outgoing`,
    COUNT(CASE WHEN type = 'incoming' THEN 1 END) AS `count incoming`
FROM traffic
GROUP BY name
ORDER BY Name;

执行该语句将直接返回目标统计表格。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:12:53