Python 两只熊猫+;地图+;分组依据(两个变量)和#x2B;计数
我有两个数据帧:客户机和消息 对于每个客户端,都有多条消息。两者都有日期(我从中提取日期)。这意味着客户的注册日期是他们注册的日期;对于消息,为消息发送的日期 我可以通过以下方式了解每个客户端发送的邮件总数:Python 两只熊猫+;地图+;分组依据(两个变量)和#x2B;计数,python,pandas,dictionary,pandas-groupby,Python,Pandas,Dictionary,Pandas Groupby,我有两个数据帧:客户机和消息 对于每个客户端,都有多条消息。两者都有日期(我从中提取日期)。这意味着客户的注册日期是他们注册的日期;对于消息,为消息发送的日期 我可以通过以下方式了解每个客户端发送的邮件总数: clients['total'] = clients['ID'].map(messages.groupby(['ID']).counts()) 但是:我怎样才能将其扩展到计算他们注册当天发送的邮件数量,而不是整个期间发送的邮件数量?我试着用两个变量来分组 clients['totalDa
clients['total'] = clients['ID'].map(messages.groupby(['ID']).counts())
但是:我怎样才能将其扩展到计算他们注册当天发送的邮件数量,而不是整个期间发送的邮件数量?我试着用两个变量来分组
clients['totalDay1'] = clients['ID'].map(messages.groupby(['ID','Day']).counts())
但是我没有达到我想要的目的,那就是为客户机df增加价值
谢谢大家!!
米格尔我想需要加入:
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