簡體   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