Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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_Numpy - Fatal编程技术网

Python 熊猫使用循环复制行

Python 熊猫使用循环复制行,python,pandas,numpy,Python,Pandas,Numpy,我有一个如下所示的数据帧: SNFrom SNTo Name Age 0 1 4 John 8 1 5 7 Jack 6 Name Age SN 0 John 8 1 1 John 8 2 2 John 8 3 3 John 8 4 4 Jack 6 5 5 Jack 6 6 6 Jack 6 7 使用pandas,我想产生如下结果

我有一个如下所示的数据帧:

   SNFrom  SNTo  Name  Age
0       1     4  John    8
1       5     7  Jack    6
   Name  Age  SN
0  John    8   1
1  John    8   2
2  John    8   3
3  John    8   4
4  Jack    6   5
5  Jack    6   6
6  Jack    6   7
使用
pandas
,我想产生如下结果:

   SNFrom  SNTo  Name  Age
0       1     4  John    8
1       5     7  Jack    6
   Name  Age  SN
0  John    8   1
1  John    8   2
2  John    8   3
3  John    8   4
4  Jack    6   5
5  Jack    6   6
6  Jack    6   7

一般规则是,我想根据
SNFrom
SNTo
中指定的范围添加新行,因此,例如,
John
应该有第1-4行,
Jack
应该有第5-7行。

这里有一种使用
apply
的相对简单的方法:

设置: 解决方案:
这是一个使用
np的矢量化解决方案。重复

s = df.SNTo - df.SNFrom
i = np.repeat(df.index, s+1)
t = df.loc[i, ['Name', 'Age', 'SNFrom']]

t.assign(SN=t.groupby(level=0).cumcount() + t.SNFrom).drop('SNFrom', 1)


请不要把那些真的很难复制和耗时的图片,而是更新你的帖子,把你的数据放在那里,它现在是什么样子,你期望作为一个理想的输出,这样它将很容易阅读和回答。
   Name  Age  SN
0  John    8   1
0  John    8   2
0  John    8   3
0  John    8   4
1  Jack    6   5
1  Jack    6   6
1  Jack    6   7