首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从两列创建索引层次结构,以规划客户保留情况

从两列创建索引层次结构,以规划客户保留情况
EN

Stack Overflow用户
提问于 2018-04-01 05:35:02
回答 1查看 102关注 0票数 1

我正在为工作执行流失分析,并且一直在尝试在现有数据框架的基础上创建多索引数据框架。

我目前有一个类似如下的Dataframe结构:

代码语言:javascript
复制
df.head(3)

CustomerID  Lifetime  Cohort  Monthly_Pay  Ltv_Rev  Sub   Pln_strt  pln Can
----------------------------------------------------------------------------
fgvghc        10     2010-5    14.99        150   2010-5  2010-5-3  2011-5-3
dhsdjk        2      2010-5    14.99        179   2010-5  2010-5-9  2010-7-8   
5uk0ez        3      2010-6    5.99         18    2010-6  2010-6-4  2010-8-2

我正在试图弄清楚每个队列在20个月内的流失情况。cohort列就是cohort本身,subscribe列标记保留的用户总数的月份。示例如下:

代码语言:javascript
复制
                  Total_Users 
Cohort  Subscribe
-------------------------------
2010-5  2010-5        2
        2010-6        2
        2010-7        1
        ...

到目前为止,我一直在尝试:

代码语言:javascript
复制
grouped = df.groupby(['Cohort', 'Subscribe'])
grouped.agg({'CustomerID': pd.Series.nunique})

但这不起作用;它只打印每个队列中的总用户,而没有真正区分队列和订阅列:

代码语言:javascript
复制
                   Total_Users 
Cohort  Subscribe
-------------------------------
2010-5  2010-5        2
2010-6  2010-6        4
2010-7  2010-7        12 

我也试过了:

代码语言:javascript
复制
    grouped = df.groupby(['Cohort', 'Subscribe'])['CustomerID'].size()

但这会打印出上面的结果,但在一系列范围内。

更新:为了节省空间,我没有发布我的实际数据帧,但现在我意识到我遗漏了可能重要的信息。我添加了计划开始日期和计划取消日期。

我认为,每个队列的映射保留问题源于对CustomerID、总客户生命周期以及开始和取消日期的不正确利用方式。

有人能帮到菜鸟吗?...作为参考,我一直将此作为指南。http://www.gregreda.com/2015/08/23/cohort-analysis-with-python/

EN

回答 1

Stack Overflow用户

发布于 2018-04-01 23:54:28

看起来你需要使用size()

代码语言:javascript
复制
import pandas as pd

df = pd.DataFrame([['fgvghc', 10, '2010-5', 14.99, 150, '2010-5'],
                   ['dhsdjk', 12, '2010-5', 14.99, 179, '2010-5'],
                   ['akdsfj', 12, '2010-5', 14.99, 179, '2010-6'],
                   ['5uk0ez', 3, '2010-6', 5.99, 17.97, '2010-6']],
                  columns=['Customer_ID', 'Lifetime', 'Cohort',
                           'Monthly_Payment', 'Lifetime_Rev', 'Subscribed'])

res = df.groupby(['Cohort', 'Subscribed'])['Customer_ID'].size()

结果:

代码语言:javascript
复制
Cohort  Subscribed
2010-5  2010-5        2
        2010-6        1
2010-6  2010-6        1
Name: Customer_ID, dtype: int64
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49592636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档