将函数应用于多索引数据帧



我想对以下数据框应用操作:

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

最新更新