如何有效地从中分解数据?

时间:2019-05-13 00:18:59

标签: python-3.x pandas

我有要分解的Google Analytics(分析)数据。

以下是我正在处理的数据框的简化版本:

date    | users | goal_completions
20150101|  2    | 1
20150102|  3    | 2

我想分解数据,以便每个“用户”都有自己的行。此外,假设每个用户只能有1个“ goal_completion”,那么第三列“ goal_completions”也将被分解。

我正在寻找的输出将是这样的:

date    | users | goal_completions
20150101|  1    | 1
20150101|  1    | 0
20150102|  1    | 1
20150102|  1    | 1
20150102|  1    | 0

我能够根据给定日期的用户数量来复制每一行,但是我似乎找不到一种方法来分解“ goal_completion”列。复制“用户”列后,这是当前的内容:

date    | users | goal_completions
20150101|  1    | 1
20150101|  1    | 1
20150102|  1    | 2
20150102|  1    | 2
20150102|  1    | 2

任何帮助将不胜感激-谢谢!

1 个答案:

答案 0 :(得分:1)

IIUC使用repeat创建dfs,然后我们用cumcountnp.where调整两列

df=df.reindex(df.index.repeat(df.users))
df=df.assign(users=1)
df.goal_completions=np.where(df.groupby(level=0).cumcount()<df.goal_completions,1,0)
df
Out[609]: 
       date  users  goal_completions
0  20150101      1                 1
0  20150101      1                 0
1  20150102      1                 1
1  20150102      1                 1
1  20150102      1                 0