Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从一个数据帧中获取唯一计数,作为数据帧中另一个数据帧的值_Python_Pandas - Fatal编程技术网

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))如果我遗漏了什么,请道歉。。。我按照您的建议做了,但是
联系人
数据框不会随着添加的列而更新。如果我只是在响应数据框上执行交叉表操作,但行没有添加到联系人中,那么它就可以工作了——我的完整脚本+这里的输出: