Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫将行分解为可变的行数_Python_Pandas - Fatal编程技术网

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