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

Cal*_*vin 4 python dataframe pandas

我有一个带有以下几列的 Pandas 数据框:

id  start  end
1   101    101
2   102    104
3   108    109
Run Code Online (Sandbox Code Playgroud)

我想用额外的行填充开始和结束之间的空白,因此输出可能如下所示:

id  number
1    101
2    102
2    103
2    104
3    108
3    109
Run Code Online (Sandbox Code Playgroud)

有没有办法在 Pandas 中做到这一点?谢谢。

jez*_*ael 6

使用嵌套列表理解和range元组列表的扁平化,最后使用DataFrame构造函数:

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
Run Code Online (Sandbox Code Playgroud)