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

如何对多变量分组创建符合结构要求的pandas DataFrame?

解决方案

最优方案:优化首次分组逻辑(无需额外拼接字段)

调整你第一次的分组写法的两个参数即可直接得到目标结构的DataFrame:

  • 给groupby传入as_index=False,避免将分组键转为行索引
  • 调整聚合函数的写法,取消嵌套列表,避免生成多级列名
# 写法1:薪资总和列默认命名为salary
team_salaries = salaries.groupby(['teamID', 'yearID'], as_index=False)['salary'].sum()

# 写法2:自定义薪资总和的列名,更适配后续分析
team_salaries = salaries.groupby(['teamID', 'yearID'], as_index=False).agg(
    total_salary = ('salary', 'sum')
)

输出结构为默认整数索引 + teamID、yearID、薪资总和三列,完全匹配需求。


备选方案:拆分已生成的teamyear字段

如果需要继续使用第二种拼接teamyear的方案,可按以下逻辑拆分字段:

# 将分组生成的索引转为普通列
teamyear = teamyear.reset_index()
# 拆分规则:teamyear最后4位为年份,剩余字符为球队ID
teamyear['yearID'] = teamyear['teamyear'].str[-4:].astype(int)
teamyear['teamID'] = teamyear['teamyear'].str[:-4]
# 筛选所需列得到目标DataFrame
team_salaries = teamyear[['teamID', 'yearID', 'salary']]

注:你提供的第二种方案原始代码存在语法错误,salaries teamyear = salaries.groupby(...)应修正为teamyear = salaries.groupby(...)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:24:02