[英]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.