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)
使用 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)