Python 熊猫能否执行包含两列的聚合操作?

Python 熊猫能否执行包含两列的聚合操作?,python,r,pandas,dplyr,Python,R,Pandas,Dplyr,给定以下数据帧, 是否可以计算col2和col2+col3之和, 在单个聚合函数中 import pandas as pd df = pd.DataFrame({'col1': ['a', 'a', 'b', 'b'], 'col2': [1, 2, 3, 4], 'col3': [10, 20, 30, 40]}) . 可乐 可乐 可乐 0 A. 1. 10 1. A. 2. 20 2. B 3. 30 3. B 4. 40 让我们先尝试分配新列 out = df.assign(col23

给定以下数据帧,
是否可以计算
col2
col2+col3
之和,
在单个聚合函数中

import pandas as pd
df = pd.DataFrame({'col1': ['a', 'a', 'b', 'b'], 'col2': [1, 2, 3, 4], 'col3': [10, 20, 30, 40]})
. 可乐 可乐 可乐 0 A. 1. 10 1. A. 2. 20 2. B 3. 30 3. B 4. 40
让我们先尝试分配新列

out = df.assign(col23 = df.col2+df.col3).groupby('col1',as_index=False).sum()
出[81]:

  col1  col2  col3  col23
0    a     3    30     33
1    b     7    70     77
根据我的理解,
apply
更像是R中的
summary

out = df.groupby('col1').\
           apply(lambda x : pd.Series({'col2_sum':x['col2'].sum(),
                                       'col23_sum':(x['col2'] + x['col3']).sum()})).\
               reset_index()
Out[83]: 
  col1  col2_sum  col23_sum
0    a         3         33
1    b         7         77

让我们先尝试分配新列

out = df.assign(col23 = df.col2+df.col3).groupby('col1',as_index=False).sum()
出[81]:

  col1  col2  col3  col23
0    a     3    30     33
1    b     7    70     77
根据我的理解,
apply
更像是R中的
summary

out = df.groupby('col1').\
           apply(lambda x : pd.Series({'col2_sum':x['col2'].sum(),
                                       'col23_sum':(x['col2'] + x['col3']).sum()})).\
               reset_index()
Out[83]: 
  col1  col2_sum  col23_sum
0    a         3         33
1    b         7         77

使用
datar
,您可以轻松完成此操作:

>>来自datar.all导入f、TIBLE、group\U by、SUMMARY、sum
>>>df=tibble(
…col1=['a','a','b','b'],
…col2=[1,2,3,4],
…col3=[10,20,30,40]
... )
>>>df>>分组依据(f.col1)>>总结(
…col2_sum=sum(f.col2),
…col23_sum=sum(f.col2+f.col3)
... )
col1 col2_sum col23_sum
0333
1 b 7 77

我是该软件包的作者。

使用
datar
,您可以轻松完成:

>>来自datar.all导入f、TIBLE、group\U by、SUMMARY、sum
>>>df=tibble(
…col1=['a','a','b','b'],
…col2=[1,2,3,4],
…col3=[10,20,30,40]
... )
>>>df>>分组依据(f.col1)>>总结(
…col2_sum=sum(f.col2),
…col23_sum=sum(f.col2+f.col3)
... )
col1 col2_sum col23_sum
0333
1 b 7 77

我是这个软件包的作者。

太棒了,
apply
+
pd.Series
部分正是我想要的。谢谢太棒了,
apply
+
pd.Series
部分正是我想要的。谢谢