繁体   English   中英

填写熊猫数据框中两列之间的数字

[英]Fill the numbers between two columns in Pandas data frame

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

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

无论如何,在熊猫市有做吗? 谢谢。

将嵌套列表理解与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

这是一个纯粹的熊猫解决方案,但从性能角度考虑,@ 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM