我有这个数据:
ID TIME
1 2
1 4
1 2
2 3
我想按以下方式对数据进行分组ID
并计算每组的平均时间和规模。
ID MEAN_TIME COUNT
1 2.67 3
2 3.00 1
如果我运行此代码,则会收到错误“ValueError:无法插入 ID,已存在”:
result = df.groupby(['ID']).agg({'TIME': 'mean', 'ID': 'count'}).reset_index()
使用参数drop=True
不创建新列index
但删除它:
result = df.groupby(['ID']).agg({'TIME': 'mean', 'ID': 'count'}).reset_index(drop=True)
print (result)
ID TIME
0 3 2.666667
1 1 3.000000
但如果需要索引中的新列rename
首先是旧的列名称:
result = df.groupby(['ID']).agg({'TIME': 'mean', 'ID': 'count'})
.rename(columns={'ID':'COUNT','TIME':'MEAN_TIME'})
.reset_index()
print (result)
ID COUNT MEAN_TIME
0 1 3 2.666667
1 2 1 3.000000
如果需要按多列聚合,解决方案:
result = df.groupby(['ID']).agg({'TIME':{'MEAN_TIME': 'mean'}, 'ID': {'COUNT': 'count'}})
result.columns = result.columns.droplevel(0)
print (result.reset_index())
ID COUNT MEAN_TIME
0 1 3 2.666667
1 2 1 3.000000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)