Python 从一个数据帧中获取唯一计数,作为数据帧中另一个数据帧的值
我有两个数据帧,我想从一个数据帧(Python 从一个数据帧中获取唯一计数,作为数据帧中另一个数据帧的值,python,pandas,Python,Pandas,我有两个数据帧,我想从一个数据帧(responses)中获取一些唯一的行计数,作为另一个数据帧(contacts)中的列值 注意:所有行的电子邮件和网络研讨会将为0。它们是当前的占位符值 responses.head() campaign_type contact_id 0 Email 0031B00002cPLuFQAW 1 Webinar 0031B00002Z2zMYQAZ 2 Webinar
responses
)中获取一些唯一的行计数,作为另一个数据帧(contacts
)中的列值
注意:所有行的电子邮件和网络研讨会将为0。它们是当前的占位符值
responses.head()
campaign_type contact_id
0 Email 0031B00002cPLuFQAW
1 Webinar 0031B00002Z2zMYQAZ
2 Webinar 0031B00002cPLuFQAW
3 Webinar 0031B00002cPLuFQAW
4 Email 003a000001nHioCAAS
5 Email 003a000001nHioCAAS
我想在contacts数据框中将每个联系人响应每个活动类型的次数作为属性进行计数
最后的联系人
数据框应如下所示(基于上述数据)
简明扼要:
df.groupby(['contact_id', 'campaign_type']).size().unstack('type', fill_value=0)
编辑:既不简短也不简单,请参见其他答案。简短:
df.groupby(['contact_id', 'campaign_type']).size().unstack('type', fill_value=0)
编辑:既不简短也不简单,请参阅其他答案。似乎您需要
pd.crosstab(df.contact_id,df.campaign_type)
Out[37]:
campaign_type Email Webinar
contact_id
0031B00002Z2zMYQAZ 0 1
0031B00002cPLuFQAW 1 2
003a000001nHioCAAS 2 0
看来你需要
pd.crosstab(df.contact_id,df.campaign_type)
Out[37]:
campaign_type Email Webinar
contact_id
0031B00002Z2zMYQAZ 0 1
0031B00002cPLuFQAW 1 2
003a000001nHioCAAS 2 0
您发布的第一段代码与问题无关,可以编辑。您发布的第一段代码与问题无关,可以编辑。@user3483203无需担心,总是有人这样做…-)顺便说一句,谢谢!当然,这对于总结响应数据帧是非常好的。我省略了
contacts
数据框中的一些列(为了保持这个示例的简单性,我已经更新了它),因此我确实希望将contacts数据框与responses数据框连接起来。有什么建议吗?@JoeFusaro你可以更新<代码>联系人=联系人。设置索引(“联系人id”);contact.update(pd.crosstab(df.contact\u id,df.campaign\u type))如果我遗漏了什么,请道歉。。。我按照您的建议做了,但是联系人
数据框不会随着添加的列而更新。如果我只是在响应数据框上执行交叉表操作,它就可以工作了,但行不会添加到联系人——我的完整脚本+输出在这里:@user3483203不用担心,总是有人这样做…-)顺便说一句,谢谢!当然,这对于总结响应数据帧是非常好的。我省略了contacts
数据框中的一些列(为了保持这个示例的简单性,我已经更新了它),因此我确实希望将contacts数据框与responses数据框连接起来。有什么建议吗?@JoeFusaro你可以更新<代码>联系人=联系人。设置索引(“联系人id”);contact.update(pd.crosstab(df.contact\u id,df.campaign\u type))如果我遗漏了什么,请道歉。。。我按照您的建议做了,但是联系人
数据框不会随着添加的列而更新。如果我只是在响应数据框上执行交叉表操作,但行没有添加到联系人中,那么它就可以工作了——我的完整脚本+这里的输出: