首页 > 解决方案 > 如何有效地分解数据?

问题描述

我有我正在尝试分解的 Google Analytics(分析)数据。

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

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

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

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

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

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

标签: python-3.xpandas

解决方案


IIUC 使用create you dfs ,然后我们调整repeat两列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

推荐阅读