以下 pandas 聚合:
df = pd.DataFrame({
'a' : [1,1,1,1],
'b' : [1,2,3,4],
'c' : [np.nan,6,7,8],
})
r = df.groupby('a').agg({
'b' : 'mean',
'c' : 'nth(0)',
})
显然给出:
AttributeError: 'SeriesGroupBy' object has no attribute 'nth(0)'
(我会为此使用
'first'
,但它给出第一个非空值,我想包含它们)。
那么,如何将
nth
上的c
聚合函数与mean
上的b
一起使用呢?
我知道这可行,但不太好:
df.groupby('a').agg({
'b' : 'mean',
'c' : lambda s:s.iloc[0],
})
您可以使用
first
代替 nth(0)
:
r = df.groupby('a').agg({
'b' : 'mean',
'c' : 'first',
})
输出:
b c
a
1 2.5 6.0