我有两个数据框:客户端和消息
对于每个客户,有几条消息。两者都有日期(我从中提取日期)。这意味着客户是他们注册的那一天;消息发送当天的消息。
我可以通过以下方式了解为每个客户发送的总消息:
clients['total'] = clients['ID'].map(messages.groupby(['ID']).counts())
但是:我怎样才能将其扩展到计算他们注册当天发送的邮件数量,而不是整个期间?我尝试按两个变量分组
clients['totalDay1'] = clients['ID'].map(messages.groupby(['ID','Day']).counts())
但是我没有得到我想要的地方,那就是将价值添加到客户端df。
谢谢! 米格尔
答案 0 :(得分:0)
我认为需要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