Python 熊猫将行分解为可变的行数
我不确定“爆炸”这个词在这里是否合适。我有一个数据框,其中包含列Python 熊猫将行分解为可变的行数,python,pandas,Python,Pandas,我不确定“爆炸”这个词在这里是否合适。我有一个数据框,其中包含列事件id,num\u步骤,和平均时间 我想以一个数据帧结束,其中,对于每个事件\u id,都有num\u步骤行,每行从0计数到num\u步骤 event\u id、num\u steps、avg\u time 1,3,5 应成为: event\u id、num\u steps、avg\u time 1,0,5 1,1,5 1,2,5 目前我正在迭代dataframe并手动创建它,但我想知道是否有任何方法可以直接在Pandas中这样做
事件id
,num\u步骤
,和平均时间
我想以一个数据帧结束,其中,对于每个事件\u id
,都有num\u步骤
行,每行从0计数到num\u步骤
event\u id、num\u steps、avg\u time
1,3,5
应成为:
event\u id、num\u steps、avg\u time
1,0,5
1,1,5
1,2,5
目前我正在迭代dataframe并手动创建它,但我想知道是否有任何方法可以直接在Pandas中这样做以增加处理时间
谢谢 当我们谈论分解时,我们会进行分解,在此之前,我们需要将最大的
步骤
转换为步骤列表
请注意,请确保您的pandas版本高于0.25.0
当我们谈论分解时,我们要进行
分解
,在此之前,我们需要将最大步骤
转换为步骤列表
请注意,请确保您的pandas版本高于0.25.0
这假设索引是唯一的:
# 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
这假设索引是唯一的:
# 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