我想对以下数据框应用操作:
index date username count
0 2015-11-01 1 16
1 2015-11-01 2 1
2 2015-11-01 3 1
3 2015-10-01 1 2
4 2015-10-01 4 29
5 2015-10-01 5 1
6 2014-09-01 1 3
7 2014-09-01 3 1
8 2014-09-01 4 1
并应用一个操作,使其达到以下目的:
index date mean
0 2015-11-01 6
1 2015-10-01 10.7
2 2014-09-01 1.3
计算采用给定日期中所有计数的总和(例如,对于 2015-11-01是 16+1+1=18(,然后除以给定日期的唯一用户名数量(例如,对于 2015-10-01 有 3(。创建一个新列 mean 来记录计算,在本例中我们称之为 mean。
我一直在尝试使用数据帧中的"应用"方法,但尚未成功。帮助将不胜感激。谢谢
您可以使用GroupBy
+sum
除以GroupBy
+nunique
:
g = df.groupby('date')
res = g['count'].sum().div(g['username'].nunique())
.rename('mean').reset_index()
print(res)
date mean
0 2014-09-01 1.666667
1 2015-10-01 10.666667
2 2015-11-01 6.000000