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

时间:2018-10-21 13:14:33

标签: python pandas pandas-groupby

我想对以下数据框执行操作:

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”方法,但没有成功。帮助将不胜感激。谢谢

1 个答案:

答案 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