繁体   English   中英

想要在 python 中出现某个任务名称的第一个日期

[英]Want to take first date appearing for a certain task name in python

我有一个 excel 表,上面写着:

任务名称 结束日期 进程 ID
任务1 2月1日 65461
任务 2 2月2日 65461
任务1 2 月 3 日 65461

我有一个与 ID 匹配的代码,并输入任务 1 的日期,但我想在 python 中获取该任务的第一个结束日期。 下面是我的代码:'''

import pandas as pd
import numpy as np
df1 = pd.read_excel("Purchase Requisition and Purchase Order Approval Workflow Tasks.xlsx")
p_id,tk,ed =df1['Process ID'].tolist(),df1['Task Name'].tolist(),df1['End Date'].tolist()
ed = pd.to_datetime(df1['End Date'])
a = len(p_id)
x=np.array(p_id)
x=np.unique(p_id)
b=len(x)
inrfqdate=[None]*b
for i in range(0,b):
    for j in range(0,a):        
        if x[i] == p_id[j]:              
            if ("Initiate Purchase Requisition" in tk[j]):
                inrfqdate[i] = ed[j]

''' 这将采用最新任务名称出现的结束日期。 我只是希望它存储第一个任务日期。

这是我为测试我的解决方案而创建的 DataFrame。

import pandas as pd

# Test Data Frame
data = {'Task Name': ['TASK 1', 'TASK 2', 'TASK 1', 'TASK 1', 'TASK 2', 'TASK 2'],
        'End Date': ['2/1/2021', '2/2/2021', '2/3/2021', '2/7/2021', '2/8/2021', 
                     '2/10/2021'],
        'Process ID': ['64561', '64561', '64561', '64562', '64562', '64562'],
    }

df = pd.DataFrame(data)

这给了我下表:

在此处输入图像描述

然后我将End Date列中的 dtype 从 Object 更改为 DateTime 并添加了一个附加列以查找按Process IDTask Name分组的Min Date

# Convert Date Column from Object to DateTime
df['End Date'] = pd.to_datetime(df['End Date'])

# Create a 'Min Date' column and groupby parameters to select minimum date
df['Min Date'] = df.groupby(['Process ID', 'Task Name'])['End Date'].transform('min')

这给了我以下 output:

在此处输入图像描述

您还可以使用以下方法替换End Date中的当前数据:

df['End Date'] = df.groupby(['Process ID', 'Task Name'])['End Date'].transform('min')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM