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

寻求PySpark groupby/pivot/sum的Pandas等价实现(尝试后未达预期)

Pandas实现PySpark groupby+pivot+sum的等价逻辑

首先你的代码存在两处基础错误:

  • 数据字典data里的Status列表长度与Name、Score不匹配(前者5个元素,后两者4个),会导致创建DataFrame失败
  • groupby(['Name')存在语法错误,缺少右方括号,应改为groupby(['Name'])

以下是修正后的正确实现方式:

方法1:使用pivot_table(推荐)

pivot_table是Pandas中实现透视表的专用函数,直接对应PySpark的groupby+pivot+sum逻辑:

import pandas as pd

# 修正数据长度匹配问题
data = {
    'Name': ['Tom', 'Jack', 'Steve', 'Ricky'],
    'Score': [28, 34, 29, 42],
    'Status': [1, 0, 1, 0]  # 调整为4个元素,与其他列长度一致
}
df = pd.DataFrame(data)

# 等价于PySpark的groupby('Name').pivot('Status').sum('Score')
result = df.pivot_table(
    index='Name',
    columns='Status',
    values='Score',
    aggfunc='sum',
    fill_value=0  # 可选:将缺失值填充为0
)
print(result)

方法2:先groupby再透视

如果要模拟先分组再透视的步骤,可以先按Name和Status分组求和,再用unstack实现透视:

# 先按Name和Status分组求和
grouped = df.groupby(['Name', 'Status'])['Score'].sum()
# 将Status列转为列索引实现透视
result = grouped.unstack(level='Status', fill_value=0)
print(result)

两种方法的输出结果一致:

Status   0   1
Name          
Jack    34   0
Ricky   42   0
Steve    0  29
Tom      0  28

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:25:22