[英]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 ID
和Task 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.