熊猫爆炸行到可变的行数

时间:2020-02-28 15:48:38

标签: python pandas

我不确定“爆炸”在这里是否正确。我有一个带有event_idnum_stepsavg_time列的DataFrame。

我想以一个DataFrame结尾,其中每个event_id都有num_steps行,每行从0到num_steps计数。

event_id, num_steps, avg_time

1, 3, 5

应成为:

event_id, num_steps, avg_time

1, 0, 5

1, 1, 5

1, 2, 5

当前,我正在遍历数据框并手动创建它,但是我想知道是否有任何方法可以直接在Pandas中执行此操作以增加处理时间?

谢谢!

2 个答案:

答案 0 :(得分:1)

在讨论爆炸时,我们先进行User Instances,然后再将最大User Instance=true转换为explode个步骤。

注意,请确保您的熊猫版本晚于0.25.0

steps

答案 1 :(得分:1)

这假设索引是唯一的:

# toy data
df = pd.DataFrame({'event_id':[1,2],
                  'num_steps':[3,2],
                  'avg_time':[5,4]})

(df.loc[df.index.repeat(df['num_steps'])]
   .assign(num_steps=lambda x: x.groupby(level=0).cumcount())
   .reset_index(drop=True)
)

输出:

   event_id  num_steps  avg_time
0         1          0         5
1         1          1         5
2         1          2         5
3         2          0         4
4         2          1         4