首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于OR条件创建变量/列

基于OR条件创建变量/列
EN

Stack Overflow用户
提问于 2019-08-06 00:12:26
回答 1查看 38关注 0票数 0

我有一个数据框架。我想发送一封关于整个流程状态的电子邮件。如果一个进程中的一个任务失败,那么整个进程都会失败。如果一个流程中的所有任务都成功了,则该流程是成功的。我在代码中创建这个逻辑时遇到了一些困难。

代码语言:javascript
复制
Process ID  Task    Execution Date  Execution Time  Start Date  Start Time  End Date    End Time    Status      Emails
1       A   7/30/2019   13:15:00    7/31/2019   9:21:31     7/31/2019   9:21:51     Successful  Not valid for this task.
1       B   7/30/2019   13:15:00    7/31/2019   9:23:41     7/31/2019   9:25:16     Successful  Not valid for this task.
1       C   7/30/2019   13:15:00    7/31/2019   9:28:03     7/31/2019   9:28:28     Successful  Not valid for this task.
1       D   7/30/2019   13:15:00    7/31/2019   9:19:22     7/31/2019   9:20:13     Successful  Not valid for this task.
1       E   7/30/2019   13:15:00    7/31/2019   9:32:20     7/31/2019   9:32:40     Successful  ['user1@gmail.com', 'user2@gmail.com', 'user3@gmail.com']
1       F   7/30/2019   13:15:00    7/31/2019   9:30:15     7/31/2019   9:30:35     Successful  Not valid for this task.
1       G   7/30/2019   13:15:00    7/31/2019   9:17:17     7/31/2019   9:17:42     Successful  Not valid for this task.
1       H   7/30/2019   13:15:00    7/31/2019   9:25:51     7/31/2019   9:26:31     Successful  Not valid for this task.
2       A   8/1/2019    1:00:00     7/31/2019   23:06:22    7/31/2019   23:06:52    Successful  ['user1@gmail.com', 'user2@gmail.com', 'user3@gmail.com']
2       B   8/1/2019    1:00:00     7/31/2019   23:03:30    7/31/2019   23:04:10    Successful  Not valid for this task.
2       C   8/1/2019    1:00:00     7/31/2019   23:01:07    7/31/2019   23:01:37    FAILED  `   Not valid for this task.

我不确定将这个逻辑包含到我的代码中最有效的方法是什么。最终,这将针对具有任意数量任务的100+进程进行扩展。我应该将其保留为数据帧,还是另一种数据结构更适合?是否应该为最终成功状态创建一个变量?最终,我希望使用数据帧中的信息基于与流程相关的电子邮件发送电子邮件。这就是为什么我想把它保存在数据帧中。

在此场景中,逻辑Process 1SuccessfulProcess 2FAILED

EN

回答 1

Stack Overflow用户

发布于 2019-08-09 07:24:28

按进程ID分组,并使用指示器随机变量表示失败的发生,原则上解决了您的问题。例如,您可以将失败进程的所有状态值设置为FAILED。

代码语言:javascript
复制
def status_summary(x):
    if 'FAILED' in x['Status'].values:
        x['Status'] =  'FAILED'
    return x

df = df.groupby('Process_ID').apply(status_summary)

df[['Process_ID', 'Task', 'Status']]
Out[79]: 
    Process_ID Task      Status
0            1    A  Successful
1            1    B  Successful
2            1    C  Successful
3            1    D  Successful
4            1    E  Successful
5            1    F  Successful
6            1    G  Successful
7            1    H  Successful
8            2    A      FAILED
9            2    B      FAILED
10           2    C      FAILED

由于保留原始信息更可取,因此您可以准备单独的状态摘要。

代码语言:javascript
复制
process_status = df.groupby(['Process_ID'])['Status'].apply(
          lambda x: 'FAILED' if 'FAILED' in x.values else 'Success').reset_index()

process_status
Out[89]: 
   Process_ID   Status
0           1  Success
1           2   FAILED
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57362386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档