python - 将 sum() 与 groupby 一起使用时保留其他列

标签 python pandas

我在下面有一个 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 将对 otherstuff1otherstuff2 具有相同的值。

我正在尝试按 name 列分组并对 value1value2 列求和。 (不是将 value1value2 相加!!!而是在每一列中分别对它们求和。)

期望得到如下结果:

    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 分组并正确汇总 value1value2 列,但最终删除列 otherstuff1otherstuff2

最佳答案

您应该指定 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/

相关文章:

python - 模型 View 设计中的属性

python - 在 Python 中,是否有 C++ 等效于声明一个函数并在使用后定义它?

python - 使用正则表达式在python中拆分字符串

python - Pandas cut 函数提供的类别少于预期

python - 使用分层索引(MultiIndex)快速选择和分配

python - 错误 : No matching distribution found for pandas - "pip install pandas"

python - 使用 Python/Pandas/Numpy 的几何级数(无循环并使用递归)

python - 在 Google Colab 中导入 csv 文件作为 pandas DataFrame 时出现错误消息

python - 从另一个数据帧行中的值填充 pandas 数据帧行

python - pandas groupby 在多索引级别 : group_keys