Применение функции к мульти-индексному фрейму данных - PullRequest
0 голосов
/ 21 октября 2018

Я хочу применить операцию к следующему фрейму данных:

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).Новый столбец среднее значение создается для записи расчета, в данном случае мы назвали его средним значением.

Я пытался использовать метод apply из DataFrame, но пока безуспешно.Помощь будет очень ценится.Спасибо

1 Ответ

0 голосов
/ 21 октября 2018

Вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...