提问人:Talha Anwar 提问时间:7/23/2020 最后编辑:Talha Anwar 更新时间:7/23/2020 访问量:144
将参数传递给 groupby 聚合 pandas 中的函数
Pass an argument to a function in groupby aggregate pandas
问:
我有一个虚拟数据框,如下所示
import pandas as pd
df=pd.DataFrame({
'ID':[1,1,2,2,2,3,4,5,5],
'workday':[1,2,1,2,3,1,1,1,2]
})
我有这两个聚合函数
df.groupby('ID').agg(['first','last'])
df.groupby('ID').agg('nth',-2)
我试过了,但它说我想在一个 groupby 聚合函数中一次传递它们lambda x: x.nth(-2)
AttributeError: 'Series' object has no attribute 'nth'
答:
1赞
jezrael
7/23/2020
#1
一个想法:
df = df.groupby('ID').agg(['first','last', lambda x: x.iloc[-2] if len(x) > 1 else np.nan])
print (df)
workday
first last <lambda_0>
ID
1 1 2 1.0
2 1 3 2.0
3 1 1 NaN
4 1 1 NaN
5 1 2 1.0
评论