【问题标题】:Cumulative Churn rate calculation using Date of a month - Date Issue is major使用一个月的日期计算累积流失率 - 日期问题是主要的
【发布时间】:2019-12-04 11:31:27
【问题描述】:

我需要累计计算每日流失率,但在尝试了多种使用 groupby 日期方法之后。我仍然无法这样做。

我已经尝试了多种方法来更改日期。我试过这个来获取日期,以便我只能使用日期中的日期,但它不起作用。

df['Day'] = df['Game_Play_Date'].apply(lambda x: x.days)

错误是:-即使在使用 pd.to_datetime 方法和使用 dt.days 访问器之后,“时间戳”对象也没有属性“天”。

df_ch = df.groupby('Game_Play_DayofMonth')[['pid1', 'pid2']]

这给出数字 61882、122654 中的日期值。像这样。

我有类似这样的数据,带有额外的列

Date        PID1    PID2
01-06-19    xa  xs
01-06-19    xb  xa
01-06-19    xc  xv
02-06-19    xd  xb
02-06-19    xe  xr
02-06-19    xf  xe

我需要这样的结果,这样我才能看到返回的玩家数量。

Date            ID
01-06-19    xa
01-06-19    xb
01-06-19    xc
01-06-19    xs
01-06-19    xv
02-06-19    xd
02-06-19    xe
02-06-19    xf
02-06-19    xr
02-06-19    xb

【问题讨论】:

    标签: python python-3.x pandas datetime pandas-groupby


    【解决方案1】:

    使用pd.melt:

    print(pd.melt(df, 'Date').iloc[:, [0, 2]].sort_values(by='Date').drop_duplicates().reset_index(drop=True))
    

    或使用pd.DataFrame.melt:

    print(df.melt('Date').iloc[:, [0, 2]].sort_values(by='Date').drop_duplicates().reset_index(drop=True))
    

    两个输出:

           Date value
    0  01-06-19    xa
    1  01-06-19    xb
    2  01-06-19    xc
    3  01-06-19    xs
    4  01-06-19    xv
    5  02-06-19    xd
    6  02-06-19    xe
    7  02-06-19    xf
    8  02-06-19    xb
    9  02-06-19    xr
    

    【讨论】:

    • 这不会删除 2019 年 1 月 6 日和 2019 年 6 月 15 日存在的 id 吗?还是会在两个日期都保留它?我在两个日期都需要它们,我有一个大约 2500K+ 行的数据集,我无法验证,因为 ID 真的很复杂
    • @AbhasMehrotra 试试吧,它应该可以工作,当它工作时请投票并接受
    猜你喜欢
    • 2020-08-12
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 2022-11-02
    相关资源
    最近更新 更多