根据来自不同列的 2 个其他值对列的值求和

Posted

技术标签:

【中文标题】根据来自不同列的 2 个其他值对列的值求和【英文标题】:sum up values of a column depending on 2 other values ​from different columns 【发布时间】:2019-11-16 22:16:17 【问题描述】:

我正在使用 jupyter notebook 用 python 可视化一些数据。 我得到了一个包含以下列的数据框:matchid、player、visionscore、win

given table

现在我想总结一下visionscore。对于每个 matchid,给出 10 个条目,从玩家 1 到 10(玩家 1-5 = 团队 1,6-10 = 团队 2),每个玩家都有自己的 visionscore。 现在我想要这样的东西:

expected result

显然我对数据分析很陌生。我已经有一张表格,其中总结了 visionscore/matchid,但不幸的是,团队之间没有分开。所以这是游戏的整体视觉分数。

table i allready got

【问题讨论】:

请使用 df.to_clipboard() 使用原始数据更新您的帖子。 您的示例数据框中的团队在哪里?你需要合并吗? 我有一个版本的数据框,其中我有一个额外的团队专栏,抱歉忘记发布那个。 【参考方案1】:

我随机生成数据,但我认为这应该可行。

df['team'] = [1 if p<=5 else 2 for p in df.player]
df.groupby(['matchid', 'team'])['visionscore', 'win'].sum()

matchid team    visionscore win
10      1       274         3
10      2       124         3
11      1       416         3
11      2       89          0

【讨论】:

df['team']=df['player'].gt(5).add(1) 怎么样 :) win get 也总结出来了。现在我需要在“win”列中删除任何不是 0 或 5 的值,因为 0 表示输,5 表示赢。我怎么能在python中这么说?我的大脑总是在 java 中思考:/ 试试df.loc[df.win.ne(0) &amp; df.win.ne(5)].ne() 表示not equal to,因此它应该选择win 列内不等于0 和5 的所有值

以上是关于根据来自不同列的 2 个其他值对列的值求和的主要内容,如果未能解决你的问题,请参考以下文章

根据每个值对列的值进行分组[重复]

在 R 中,如何根据一列的值对所有其他列求和,而不指定列名?

聚合后如何有条件地对来自不同列的值求和?

使用子查询对列的值求和

SonataAdminBundle 如何在列表视图中对列的值求和

如何聚合数据框并通过 r 中的重复行对列的值求和