【问题标题】:Grouping summing and joining in pandas分组求和和加入熊猫
【发布时间】:2015-12-22 03:29:17
【问题描述】:

我花了好几个小时才弄明白。

我有一个数据集 salaries 包含以下列-

['yearID' 'teamID' 'lgID' 'playerID' 'salary']

它列出了每个球队每年每个球员的薪水。

我有另一个数据集 teams 包含以下列-

['yearID', 'teamID', 'W']

它列出了每个团队每年的胜利(用 W 表示)。

使用这两个数据集,我想要一个数据集,其中包含每个团队每年的总薪水和胜利。

我做了很多尝试,但都失败了。这是一个:

  1. 我将salaries 数据集按“teamID”和“yearID”分组。

  2. 我将其相加得出一个团队在给定年份的总工资。

    salariesGrouped = salaries.groupby(['teamID', 'yearID']).sum()
    
  3. 我尝试将它与teams 数据集合并,但它失败了,因为salariesGrouped 只有一列,即“工资”。

    pd.merge(salariesGrouped, teams, on=['yearID', 'teamID'])
    

我该怎么办?


样本数据:

工资:

yearID       teamID       lgID       playerID     salary
1999          A             X           ABC         100
1999          A             Y           XXX         900
2000          B             Z           YYY         300
2001          A             K           ZZZ         200 

团队:

yearID       teamID       W
1999           A          20
2000           B          30
2001           A          40
2002           D          10

预期输出:

teamID      yearID       W      salary
A           1999         20      1000
            2000         40      200
B           2000         30      300           

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    然后试试这个解决方案:

    Salaries = Salaries.groupby(['yearID','teamID']).sum()
    Salaries = Salaries.reset_index()
    
    data = pd.merge(df_salaries, df_teams, on=['yearID','teamID'])
    

    【讨论】:

    • 它返回正确的每支球队的总工资金额,但错误的获胜次数。胜利属于一个团队,不应相加。
    • 您能否向我们展示您的数据样本以及期望的结果?
    • 好的。我刚刚用示例数据和期望的结果更新了问题。
    • 它给出:KeyError: 'yearID'。这是因为Salaries 没有“yearID”和“teamID”列。我通过运行Salaries.columns.values 进行了检查,它只返回一列“工资”。
    • 当您按分组为索引的列分组时(如果按多列分组,您将拥有多个索引)。这就是你得到关键错误“yearID”的原因。仅仅因为该列不再存在,它已成为索引。通过重置索引,您可以取回列并拥有通常的 0 到 n 索引
    【解决方案2】:

    这对你有用吗?

    teams['Total Salaries'] = list(salariesGrouped.salary)
    

    【讨论】:

    • 我不这么认为,因为teams 有 2745 行,而 salariesGrouped 有 828 行。
    猜你喜欢
    • 2014-07-11
    • 1970-01-01
    • 2017-02-06
    • 2018-04-29
    • 2017-03-21
    • 2021-12-14
    • 2018-11-07
    相关资源
    最近更新 更多