Python pandas:连续列查找

时间:2017-09-07 15:28:10

标签: python pandas concatenation lookup

使用基于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
  • 仅限推介
  • 仅限有机食品
  • cpc&介
  • cpc&有机
  • 推荐&有机
  • cpc,referral&有机

重要的是,上述值在列中是唯一的,因此它不是“cpc& referral”一次,而是“referral& cpc”一次。格式是什么并不重要 - &或者逗号;什么是最简单的。

我可能需要创建一个查找表,如下所示:

Customer |medium_year
ABC        cpc only
BCD        cpc, referral
CDE        referral, organic
DEF        organic, referral, cpc

有了,我可以使用.loc或查找。但是如何创建查找表呢?或者是否有更简单的方法?谢谢

1 个答案:

答案 0 :(得分:3)

您可以使用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