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

PySpark实现多Zone列的Category分组计数问题求助

解决方案

通用SQL实现

先通过UNION ALL将原表的两列拆分为行数据,再分组统计即可得到目标结果:

SELECT 
    Category,
    Zone,
    COUNT(*) AS count
FROM (
    -- 提取Zone 1的分类数据
    SELECT 
        `Zone 1` AS Category,
        'Zone1' AS Zone
    FROM your_table
    UNION ALL
    -- 提取Zone 2的分类数据
    SELECT 
        `Zone 2` AS Category,
        'Zone2' AS Zone
    FROM your_table
) AS unpivoted_data
GROUP BY Category, Zone
ORDER BY Zone, Category;

Pandas实现(Python)

如果用Python处理表格数据,可通过melt函数转换表结构后分组统计:

import pandas as pd

# 加载原始数据(实际场景可替换为读取文件)
raw_data = {
    'Zone 1': ['A', 'A', 'B', 'A', 'B'],
    'Zone 2': ['A', 'B', 'A', 'B', 'B']
}
df = pd.DataFrame(raw_data)

# 转换表结构并统计数量
result_df = df.melt(var_name='Zone', value_name='Category') \
              .replace({'Zone': {'Zone 1': 'Zone1', 'Zone 2': 'Zone2'}}) \
              .groupby(['Category', 'Zone'], as_index=False) \
              .size() \
              .rename(columns={'size': 'count'})

# 按Zone和Category排序,匹配目标结果顺序
result_df = result_df.sort_values(['Zone', 'Category'])
print(result_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:05:17