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

如何按ID分组,将Status列值的计数拆分为独立列?

实现数据透视统计的几种方法

你需要对ID分组,分别统计每个ID对应的Enabled和Disabled状态数量,以下是不同工具下的实现方式:

SQL 实现

如果数据存储在数据库中,可通过GROUP BY结合条件计数完成转换:

SELECT 
    ID,
    COUNT(CASE WHEN Status = 'Enabled' THEN 1 END) AS `Count Enabled`,
    COUNT(CASE WHEN Status = 'Disabled' THEN 1 END) AS `Count Disabled`
FROM your_table
GROUP BY ID;

原理:按ID分组后,用CASE WHEN筛选对应状态的行,COUNT会自动忽略不符合条件的NULL值,从而得到各状态的准确计数。

Python Pandas 实现

如果用Python处理数据,Pandas的透视表功能可快速完成需求:

import pandas as pd

# 构造原始数据(实际场景可从文件/数据库读取)
df = pd.DataFrame({
    'ID': ['A', 'A', 'A', 'B', 'B'],
    'Status': ['Enabled', 'Disabled', 'Enabled', 'Enabled', 'Disabled']
})

# 方法1:使用pivot_table
result_df = df.pivot_table(
    index='ID',
    columns='Status',
    aggfunc='size',
    fill_value=0
).rename(columns={'Enabled': 'Count Enabled', 'Disabled': 'Count Disabled'}).reset_index()

# 方法2:使用crosstab(更简洁的交叉表实现)
result_df = pd.crosstab(
    df['ID'],
    df['Status']
).rename(columns={'Enabled': 'Count Enabled', 'Disabled': 'Count Disabled'}).reset_index()

# 输出结果
print(result_df)

两种方法都会生成符合要求的表格,fill_value=0确保无对应状态的ID显示0而非空值。

Excel 实现

如果用Excel处理,可通过数据透视表快速完成:

  • 选中原始数据区域,点击「插入」选项卡的「数据透视表」,选择表格放置位置
  • 在数据透视表字段面板中:
    • 将「ID」拖到「行」区域
    • 将「Status」两次拖到「值」区域
  • 对第一个值字段(Status):
    • 右键点击值字段 → 「值字段设置」,将计算类型改为「计数」
    • 再次右键 → 「值字段设置」→ 「自定义名称」输入「Count Enabled」
    • 点击「值筛选」→ 「等于」,选择「Enabled」
  • 对第二个值字段重复上述操作,自定义名称改为「Count Disabled」,筛选条件选择「Disabled」
  • 调整列顺序即可得到目标表格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:54:17