我在下面有一个 pandas 数据框:
df
name value1 value2 otherstuff1 otherstuff2
0 Jack 1 1 1.19 2.39
1 Jack 1 2 1.19 2.39
2 Luke 0 1 1.08 1.08
3 Mark 0 1 3.45 3.45
4 Luke 1 0 1.08 1.08
相同的 name
将对 otherstuff1
和 otherstuff2
具有相同的值。
我正在尝试按 name
列分组并对 value1
和 value2
列求和。 (不是将 value1
与 value2
相加!!!而是在每一列中分别对它们求和。)
期望得到如下结果:
newdf
name value1 value2 otherstuff1 otherstuff2
0 Jack 2 3 1.19 2.39
1 Luke 1 1 1.08 1.08
2 Mark 0 1 3.45 3.45
我试过了
newdf = df.groupby(['name'], as_index=False).sum()
按 name
分组并正确汇总 value1
和 value2
列,但最终删除列 otherstuff1
和 otherstuff2
。
最佳答案
您应该指定 pandas 必须对其他列执行的操作。在你的情况下,我认为你想保留一行,不管它在组中的位置如何。
这可以通过组上的 agg
来完成。 agg
接受一个参数,该参数指定应该对每一列执行什么操作。
df.groupby(['name'], as_index=False).agg({'value1': 'sum', 'value2': 'sum', 'otherstuff1': 'first', 'otherstuff2': 'first'})
关于python - 将 sum() 与 groupby 一起使用时保留其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49783178/