Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将嵌套If条件应用于dataframe-Python_Python_Sql Server_Dataframe_If Statement - Fatal编程技术网

将嵌套If条件应用于dataframe-Python

将嵌套If条件应用于dataframe-Python,python,sql-server,dataframe,if-statement,Python,Sql Server,Dataframe,If Statement,我正在连接SQL数据库并生成数据帧,在凌晨4点到6点之间睡眠时间为5分钟,持续2小时,并尝试检查作业状态,以下是我尝试实现的条件 在所有的工作中,我想做的是: 如果有任何作业正在运行,请检查它是否在预计时间内完成 如果是,则打印在预计时间内正常运行 else打印已超出预计时间。 否则,请检查最后一个作业是否已完成,然后打印所有已完成的作业。 数据如下: 我的代码: i=0 while i <12: todays_run="select * from table

我正在连接SQL数据库并生成数据帧,在凌晨4点到6点之间睡眠时间为5分钟,持续2小时,并尝试检查作业状态,以下是我尝试实现的条件

在所有的工作中,我想做的是:

如果有任何作业正在运行,请检查它是否在预计时间内完成

如果是,则打印在预计时间内正常运行 else打印已超出预计时间。 否则,请检查最后一个作业是否已完成,然后打印所有已完成的作业。 数据如下:

我的代码:

i=0
while i <12:
    
    todays_run="select * from table where getdate()=startdate"  /*Checking for rundate as todays date*/
    result=pd.read_sql(todays_run,sql_conn)
    if result.empty:
        print(' No jobs are running  :')
    elif result[result.status=='RUNNING' and result.start_date <result.estimated_end]:
        print("Below  jobs are currently running with estimated time \n\n ",result)
    else print("Jobs taking long time",<job_name>)
    elsif result[result.status=='COMPLETED' and result.jobname='A']
        print("all jobs are completed \n \n ")
    time.sleep(60)
exit(1)
这可以使用python实现吗?

在您的elif条件下,您可能一次计算多行。这就是您收到该错误的原因。 如果您不关心有多少行符合您的条件,可以尝试:

elif结果[result.status==“RUNNING”和result.start\u date在您的elif条件下,您可能一次计算多行。这就是您收到该错误的原因。 如果您不关心有多少行符合您的条件,可以尝试:


elif result[result.status=='RUNNING'和result.start_date系列掩码在这种情况下会有所帮助。应用于数据帧每行的每个逻辑条件都会生成一个真/假值列表/系列

然后,您可以使用df.loc[mask]访问行,并将逻辑and转换为位掩码&以将掩码组合在一起。我还喜欢说mask.any或mask.all,这取决于逻辑测试。这些技巧帮助我完成您试图实现的步骤

下面是一些你试图实现的想法,转化为一个系列面具

对于我来说,范围12: 将运行日期检查为今天日期 todays_run=从getdate=startdate的表中选择* 结果=pd.read\u sqltodays\u run,sql\u conn 正在运行\u掩码=结果[状态]=“正在运行” 已完成\u掩码=结果[状态]=“已完成” jobname\u a\u mask=结果[jobname]=“a” 估计的\u掩码=结果[开始日期]<结果[估计的\u结束] 如果result.empty: 打印“没有作业正在运行:” elif运行\u掩码和估计\u掩码。任何: printBelow作业当前正在以估计的时间运行\n\n, result.loc[运行\u掩码和估计\u掩码] else作业名称\u a\u掩码和已完成的\u掩码。全部: 打印所有作业都已完成\n\n 时间到了 出口1
系列掩码在这种情况下会有所帮助。应用于数据帧每行的每个逻辑条件都会生成一个真/假值列表/系列

然后,您可以使用df.loc[mask]访问行,并将逻辑and转换为位掩码&以将掩码组合在一起。我还喜欢说mask.any或mask.all,这取决于逻辑测试。这些技巧帮助我完成您试图实现的步骤

下面是一些你试图实现的想法,转化为一个系列面具

对于我来说,范围12: 将运行日期检查为今天日期 todays_run=从getdate=startdate的表中选择* 结果=pd.read\u sqltodays\u run,sql\u conn 正在运行\u掩码=结果[状态]=“正在运行” 已完成\u掩码=结果[状态]=“已完成” jobname\u a\u mask=结果[jobname]=“a” 估计的\u掩码=结果[开始日期]<结果[估计的\u结束] 如果result.empty: 打印“没有作业正在运行:” elif运行\u掩码和估计\u掩码。任何: printBelow作业当前正在以估计的时间运行\n\n, result.loc[运行\u掩码和估计\u掩码] else作业名称\u a\u掩码和已完成的\u掩码。全部: 打印所有作业都已完成\n\n 时间到了 出口1
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().