Две Панды + Карта + Группировка по (две переменные) + количество - PullRequest
0 голосов
/ 08 июня 2018

У меня есть два фрейма данных: клиенты и сообщения

Для каждого клиента есть несколько сообщений.У обоих есть даты (из которых я извлекаю день).Это означает, что для клиента это день, когда он подписывается;для сообщений день, когда сообщение отправлено.

Я могу узнать общее количество сообщений, отправленных каждому клиенту, только с помощью:

clients['total'] = clients['ID'].map(messages.groupby(['ID']).counts())

Но: как я могу расширить это до посчитать, сколько сообщений было отправлено в день их подписки , а не за весь период?Я пытаюсь сгруппировать по двум переменным

clients['totalDay1'] = clients['ID'].map(messages.groupby(['ID','Day']).counts())

Но я не получаю, где хочу, то есть добавить значение к клиенту df.

Спасибо!Мигель

1 Ответ

0 голосов
/ 08 июня 2018

Я думаю, что нужно join:

s = messages.groupby(['ID','Day']).size().rename('totalDay1')
clients = clients.join(s, on=['ID','Day'])

Образец:

messages = pd.DataFrame({'ID':[1,2,3], 'Day':[1,2,2], 'col':[3,4,5]})
clients = pd.DataFrame({'ID':[1,2,5], 'Day':[1,2,2], 'col':[4,5,6]})

s = messages.groupby(['ID','Day']).size().rename('totalDay1')
clients = clients.join(s,  on=['ID','Day'])
print (clients)
   ID  Day  col  totalDay1
0   1    1    4        1.0
1   2    2    5        1.0
2   5    2    6        NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...