我在调度应用程序中有一个数据帧,它有4列:
以下是我称之为bldf的数据帧中的示例集:
| |I|S|F|C|
|--| --: | --: | --: | --: |
|0|1|1.0|1.4|5|
|1|2|1.1|1.5|5|
|2|3|1.2|1.6|3|
|3|4|1.3|1.7|5|
|4|5|1.4|1.5|4|
|5|6|1.5|1.6|12|
|6|7|1.6|2.1|4|
|7|8|1.7|2.2|4|
我有一个函数,可以查看每个新请求将运行多少并发作业
def ccj(x):
return len( bldf[ (bldf['I']<=bldf['I'][x]) &
(bldf['S']<bldf['F'][x]) & (bldf['F']>bldf['S'][x]) ] )
x是行指示符
正如您从以ccj作为输出构建的新列中所看到的那样,这工作得很好:
| |I|S|F|C|ccJobs|
|--| --: | --: | --: | --: | --: |
|0|1|1.0|1.4|5|1|
|1|2|1.1|1.5|5|2|
|2|3|1.2|1.6|3|3|
|3|4|1.3|1.7|5|4|
|4|5|1.4|1.5|4|4|
|5|6|1.5|1.6|12|3|
|6|7|1.6|2.1|4|2|
|7|8|1.7|2.2|4|2|
但我需要通过请求的容量(或更低)来了解这一点。i、 e.如果在C=3时请求作业,则任何具有3台或更多容量的机器都可以执行该作业。所以,例如,我想要一个函数,它允许我按顺序查看每一行,并计算在4或更低、5或更低的容量下,有多少作业将并发运行。。。这是我的功能,它工作不正常:
def ccjTC(x,TC):
return len( bldf[ (bldf['I']<=bldf['I'][x]) &
(bldf['S']<bldf['F'][x]) & (bldf['F']>bldf['S'][x]) &
(TC >= bldf['C'][x]) ] )
TC是目标容量
(TC>;=bldf['C'][x])条件工作不正常
如果我打开函数并查看过滤后的数据帧(删除len()),则表明过滤器出现故障
使用:
def ccjTC(x,TC):
return ( bldf[ (bldf['I']<=bldf['I'][x]) &
(bldf['S']<bldf['F'][x]) & (bldf['F']>bldf['S'][x]) &
(TC >= bldf['C'][x]) ] )
对于ccjTC(3,3)或ccjTC(3,4),我希望:
| |I|S|F|C|
|--| --: | --: | --: | --: |
|2|3|1.2|1.6|3|
但我得到了一个空的框架。只有当我将TC增加到5时,我才能得到我所期望的
| |I|S|F|C|
|--| --: | --: | --: | --: |
|0|1|1.0|1.4|5|
|1|2|1.1|1.5|5|
|2|3|1.2|1.6|3|
|3|4|1.3|1.7|5|
第2行有一个请求的容量(C)(如果为3),但直到TC达到5时才看到它
为什么?
这条线是干什么的
它返回真还是假
Paul指出了我的错误-我不小心将[x]行引用放在了容量比较中
守则应该是:
相关问题 更多 >
编程相关推荐