按一列分组并在 pandas 中查找另一列的总和和最大值

2024-02-12

我有一个像这样的数据框:

Name  id  col1  col2  col3  cl4 
PL    252  0     747   3     53  
PL2   252  1     24    2     35 
PL3   252  4     75    24    13 
AD    889  53    24    0     95 
AD2   889  23    2     0     13  
AD3   889  0     24    3     6  
BG    024  12    89    53    66 
BG1   024  43    16    13    0   
BG2   024  5     32    101   4   

现在我需要按 ID 进行分组,对于列 col1 和 col4 找到每个 id 的总和并将其放入靠近父列的新列中(例如:col3(sum)),但对于 col2 和 col3 找到最大值。 期望的输出:

Name  id  col1 col1(sum) col2 col2(max) col3 col(max) col4 col4(sum)
PL    252  0       5      747    747     3     24    6    18
PL2   252  1       5      24     747     2     24    12   18
PL3   252  4       5      75     747     24    24    0    18
AD    889  53      76     24     24      95    95    23   33
AD2   889  23      76     2      24      13    95    5    33
AD3   889  0       76     24     24      6     95    5    33
BG    024  12      60     89     89      66    66    0    67   
BG1   024  43      60     16     89      0     66    63   67    
BG2   024  5       60     32     89      4     66    4    67    

计算这个最简单、最快的方法是什么?


最(熊猫)本地的方法是使用.agg() https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.agg.html方法,允许您指定要对每列应用的聚合函数(就像在 SQL 中所做的那样)。

文档中的示例:

df.groupby('A').agg({'B': ['min', 'max'], 'C': 'sum'})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按一列分组并在 pandas 中查找另一列的总和和最大值 的相关文章

随机推荐