2024-05-14 21:14:51 发布
网友
我有一个这样的测向仪:
idx total 1 5 1 10 1 2 2 10 2 10 2 55
并希望创建另一列,对每个id的总计和平均值进行计算,以得到:
您可以将groupby与agg一起使用,然后merge:
groupby
agg
merge
df.merge(df.groupby('idx')['total'] .agg(['sum','mean']), left_on='idx', right_index=True)
输出:
通常我们应该使用transform,但是由于transform不能接受带有groupby对象的类列表函数,所以我们使用agg+reindex
transform
reindex
df.groupby('idx').total.agg(['sum','mean']).reindex(df.idx).reset_index() Out[64]: idx sum mean 0 1 17 5.666667 1 1 17 5.666667 2 1 17 5.666667 3 2 75 25.000000 4 2 75 25.000000 5 2 75 25.000000 #df.groupby('idx').total.agg(['sum','mean']).reindex(df.idx).reset_index().assign(Todat=df.total.values)
您可以将
groupby
与agg
一起使用,然后merge
:输出:
^{pr2}$通常我们应该使用
transform
,但是由于transform
不能接受带有groupby
对象的类列表函数,所以我们使用agg
+reindex
相关问题 更多 >
编程相关推荐