根据 2 列的范围将新行插入到 Pandas 数据框中

use*_*882 5 python dataframe pandas

我有一个 df 像:

ID       value1   start     end
 1         100     1        2       
 1         200     2        4
 2         50      1        1
 2         30      3        5 
Run Code Online (Sandbox Code Playgroud)

我想为开始和结束之间的每个值填充新行

最终的 df 应如下所示,其中 period 是开始和结束之间的每个唯一值

    ID       value1      period     
     1         100     1        
     1         100     2            
     1         200     2 
     1         200     3 
     1         200     4       
     2         50      1        
     2         30      3    
     2         30      4 
     2         30      5     
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 1

使用 for 循环创建列列表后range,这成为一个取消嵌套的问题

df['New']=[list(range(x,y+1)) for x , y in zip(df.start,df.end)]
Yourdf=unnesting(df,['New'])
Yourdf
   New  ID  value1  start  end
0    1   1     100      1    2
0    2   1     100      1    2
1    2   1     200      2    4
1    3   1     200      2    4
1    4   1     200      2    4
2    1   2      50      1    1
3    3   2      30      3    5
3    4   2      30      3    5
3    5   2      30      3    5
Run Code Online (Sandbox Code Playgroud)