我正在使用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
答案 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