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

Python 填充数据框中两列之间的数字

Python 填充数据框中两列之间的数字,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个包含以下列的熊猫数据框架: id start end 1 101 101 2 102 104 3 108 109 我想用额外的行填充开始和结束之间的间隙,因此输出可能如下所示: id number 1 101 2 102 2 103 2 104 3 108 3 109 在熊猫身上有这样做的方法吗?谢谢。将嵌套列表理解与范围一起使用,并将元组列表展平,最后使用数据帧构造函数: zipped = zip(df['id

我有一个包含以下列的熊猫数据框架:

id  start  end
1   101    101
2   102    104
3   108    109
我想用额外的行填充开始和结束之间的间隙,因此输出可能如下所示:

id  number
1    101
2    102
2    103
2    104
3    108
3    109

在熊猫身上有这样做的方法吗?谢谢。

将嵌套列表理解与
范围一起使用,并将元组列表展平,最后使用
数据帧
构造函数:

zipped = zip(df['id'], df['start'], df['end'])

df = pd.DataFrame([(i, y) for i, s, e in zipped for y in range(s, e+1)],
                   columns=['id','number'])
print (df)
   id  number
0   1     101
1   2     102
2   2     103
3   2     104
4   3     108
5   3     109

这是一个纯熊猫解决方案,但性能方面,@jaezrael的解决方案会更好

df.set_index('id').apply(lambda x: pd.Series(np.arange(x.start, x.end + 1)), axis = 1)\
.stack().astype(int).reset_index()\
.drop('level_1', 1)\
.rename(columns = {0:'Number'})

    id  Number
0   1   101
1   2   102
2   2   103
3   2   104
4   3   108
5   3   109