我想对以下数据框执行操作:
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)。创建了一个新的均值栏以记录计算,在这种情况下,我们称其为均值。
我一直在尝试使用DataFrame中的“ apply”方法,但没有成功。帮助将不胜感激。谢谢
答案 0 :(得分:1)
您可以使用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