我在python中使用pandas库以获取以下内容:
我目前有一个如下所示的数据集:
ID START END
x 450 600
y 100 500
. . .
这里的开始和结束代表足迹,即船只从x点到y停在这里。
我想要做的是创建二进制列1,2 3 ...直到' END'中的最大值。如果该列号在' START'范围内,则显示1到'结束'
我想在这里完成的是查找所有足迹的总使用次数。现在我的方法是使用二进制列并将它们相加以获得总计数。
我也愿意采用更好的方法来解决我的问题。
edit_1:
我想要什么 -
ID START END 1 2 3 ...... 450 ..... 500 .... 600 601
x 450 600 0 0 0 1 1 1 0
y 100 500 0 0 0 1 1 0 0
. . .
答案 0 :(得分:1)
如果我理解正确,您希望将值1循环到max('END')
,并根据范围START
到END
生成真/假值。我想你想要的东西:
for i in range(1,df['END'].max()+1):
df[i] = ((i >= df['START']) & (i <= df['END'])).astype(int)
但是,如果您只想弄清所有行&#34;重叠&#34;的步骤数,您可以这样做:
max((df['END'].min() - df['START'].max()), 0)
由于只有>= 'START'
但<= 'END'