Python pandas:连接列查找
Posted
技术标签:
【中文标题】Python pandas:连接列查找【英文标题】:Python pandas: concatenated column lookup 【发布时间】:2017-09-07 15:28:10 【问题描述】:使用基于 Google Analytics 数据的 python pandas 数据框:
Customer | medium | dollars | date
ABC cpc 43 04062015
ABC cpc 35 05042015
BCD cpc 25 02012015
BCD referral 15 01112015
CDE referral 67 03262015
CDE organic 66 04042015
CDE organic 15 03062015
DEF organic 33 07092015
DEF referral 90 01052015
DEF cpc 57 04122015
您可以看到客户 ABC 仅通过 cpc 进行交易,而客户 BCD 通过 cpc 和推荐进行交易。
为了正确的聚合,我需要添加以下列
Customer | medium | dollars | date |medium_year
ABC cpc 43 04062015 cpc
ABC cpc 35 05042015 cpc
BCD cpc 25 02012015 cpc, referral
BCD referral 15 01112015 cpc, referral
CDE referral 67 03262015 referral, organic
CDE organic 66 04042015 referral, organic
CDE organic 15 03062015 referral, organic
DEF organic 33 07092015 organic, referral, cpc
DEF referral 90 01052015 organic, referral, cpc
DEF cpc 57 04122015 organic, referral, cpc
我基本上正在努力实现一个支点,我可以通过“中等”列的所有迭代来总结客户 KPI 或唯一客户数量。
仅限每次点击费用 仅供参考 仅限有机 每次点击费用和推荐 每次点击费用和有机 推荐和有机 每次点击费用、推荐和有机重要的是,上述值在列中是唯一的,因此它不是一次“cpc & Referral”和“referral & cpc”一次。格式是什么都没关系 - & 或逗号;最简单的。
我可能需要创建一个查找表,如下所示:
Customer |medium_year
ABC cpc only
BCD cpc, referral
CDE referral, organic
DEF organic, referral, cpc
一旦有了,我就可以使用 .loc 或查找。但是如何创建查找表?或者有没有更简单的方法?谢谢你
【问题讨论】:
【参考方案1】:您可以使用groupby()
和transform()
执行此操作,例如:
>>> df['medium_year'] = df.groupby('Customer')['medium'].transform(lambda x: ', '.join(set(x)))
>>> df
Customer medium dollars date medium_year
0 ABC cpc 43 4062015 cpc
1 ABC cpc 35 5042015 cpc
2 BCD cpc 25 2012015 cpc, referral
3 BCD referral 15 1112015 cpc, referral
4 CDE referral 67 3262015 referral, organic
5 CDE organic 66 4042015 referral, organic
6 CDE organic 15 3062015 referral, organic
7 DEF organic 33 7092015 referral, organic, cpc
8 DEF referral 90 1052015 referral, organic, cpc
9 DEF cpc 57 4122015 referral, organic, cpc
【讨论】:
非常感谢 - 我如何避免“cpc,referral”和“referral,cpc” - 我应该事先按客户和媒介排序吗? 如果set(x)
没有以一致的顺序返回内容,您可以使用sorted(set(x))
。以上是关于Python pandas:连接列查找的主要内容,如果未能解决你的问题,请参考以下文章
如何使用连接来填充列的缺失值 - Python Pandas?