python - Pandas - dataframe groupby - 如何获取多列的总和

标签 python pandas dataframe pandas-groupby

这应该很简单,但不知何故我找不到可行的解决方案。

我有一个 pandas 数据框,如下所示:

index col1   col2   col3   col4   col5
0     a      c      1      2      f 
1     a      c      1      2      f
2     a      d      1      2      f
3     b      d      1      2      g
4     b      e      1      2      g
5     b      e      1      2      g

我想按 col1 和 col2 分组并得到 col3 和 col4 的 sum() col5 可以被删除,因为数据无法聚合。

输出应该是这样的。我对在生成的数据框中同时包含 col3col4 感兴趣。 col1col2 是否是索引的一部分并不重要。

index col1   col2   col3   col4   
0     a      c      2      4          
1     a      d      1      2      
2     b      d      1      2      
3     b      e      2      4      
  

这是我尝试过的:

df_new = df.groupby(['col1', 'col2'])['col3', 'col4'].sum()

然而,这只会返回 col4 的聚合结果。

我迷路了。我发现的每个示例都只聚合了一列,显然不会出现问题。

最佳答案

通过使用应用

df.groupby(['col1', 'col2'])["col3", "col4"].apply(lambda x : x.astype(int).sum())
Out[1257]: 
           col3  col4
col1 col2            
a    c        2     4
     d        1     2
b    d        1     2
     e        2     4

如果你想聚合

df.groupby(['col1', 'col2']).agg({'col3':'sum','col4':'sum'})

关于python - Pandas - dataframe groupby - 如何获取多列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46431243/

相关文章:

python - 如何将每个字典值插入列表中相应键之后?

python - Pandas - 将另一个 DF 中的多行映射到多列

python - 遍历数据框,根据值创建字典

python - 如果所有列都包含特定模式,请选择 Pandas 数据框中的行

python - PIL 和使用 asyncio 的阻塞调用

python - 使用 scrapy 版本 0.22.1 进行多页抓取 - "cannot import name CrawlSpider"错误是什么意思?

python - GridSearchCV 在管道中将 fit_params 传递给 XGBRegressor 产生 "ValueError: need more than 1 value to unpack"

python - 将系列映射到 min(list, key=lambda x : abs(series)) function

r - 如何创建新列并通过 r 中的选定行添加列名

python - 基于 Pandas DataFrame 中两行之间的斜率的条件