我不确定“爆炸”在这里是否正确。我有一个带有event_id
,num_steps
和avg_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中执行此操作以增加处理时间?
谢谢!
答案 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