groupby之后,使用agg,如何在其他列的条件下获取一个元素

时间:2019-08-12 15:09:04

标签: pandas

我正在使用groupby使用不同的功能处理许多列。

我只使用了一列,但是我不能在其他列的情况下选择元素。

import pandas as pd
data = {'a':['A','C','E','J'],'b':[1,2,3,4]}
df = pd.DataFrame(data, index=[1,1,1,1])
df.groupby(level=0).agg({
    'b':'sum',
    'b':select element from b where a = 'C'
})

目标是使用agg来实现:

df.groupby(level=0).apply(lambda x:x.loc[x.a=='C','b'])
df.groupby(level=0).b.first()
df.groupby(level=0).b.sum()


    f   first   sum
1   2    1       10

1 个答案:

答案 0 :(得分:0)

否,您不能将agg与多列一起使用。 Agg是汇总单个列的值,如果必须具有基于单独列的条件,则需要使用apply。

df.groupby(level=0).apply(lambda x: pd.Series([x.loc[x.a =="C", 'b'].values[0], 
                                               x.b.iloc[0], 
                                               x.b.sum()], index=['f','first','sum']))

输出:

   f  first  sum
1  2      1   10