问题:jupyter做groupyby聚合时用agg不报错,但pycharm上报错ValueError: Must produce aggregated value
代码如下:
df=df.groupby('continu_flag').agg(
{'uli': lambda x: np.unique(x), 'appeartime': lambda x: list(x)[0],
'stayTime': lambda x: sum(x)}).reset_index(drop=True)
解决方法:
transform和agg所不一样的地方,对agg而言,会计算得到A,B,C公司对应的均值并直接返回,但对transform而言,则会对每一条数据求得相应的结果,同一组内的样本会有相同的值,组内求完均值后会按照原索引的顺序返回结果,详细见下图:


具体为什么改了下面的可以在pycharm上运行,原因还没搞清楚,总之是可以了。
df_g = df.groupby('continu_flag')
df_uli = df_g[['uli','appeartime']].transform(lambda x:list(x)[0])
df_uli['stayTime'] = tra_df_g['stayTime'].transform(np.sum)
df_uli = tra_df_uli.drop_duplicates(keep='first')
参考:
https://zhuanlan.zhihu.com/p/101284491
https://blog.csdn.net/qq_42314245/article/details/115469438
网友评论