按变量查询不在Dataframe中工作

2024-09-21 01:13:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我在调度应用程序中有一个数据帧,它有4列:

  • I:请求作业的顺序索引(作业1在作业2之前请求…)
  • S:请求的开始时间
  • F:要求的完成时间
  • C:作业所需的机器容量

以下是我称之为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时才看到它

为什么?


Tags: 数据函数机器应用程序lenreturndef作业
2条回答

这条线是干什么的

return ( bldf[ (bldf['I']<=bldf['I'][x]) &
                  (bldf['S']<bldf['F'][x]) & (bldf['F']>bldf['S'][x]) &
                  (TC >= bldf['C'][x]) ] )

它返回真还是假

Paul指出了我的错误-我不小心将[x]行引用放在了容量比较中

守则应该是:

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']) ] )

相关问题 更多 >

    热门问题