簡體   English   中英

獲取python groupby中字符串的第一次和最后一次出現

[英]get first and last occurence of string in python groupby

我有一個帶有以下列的 python 數據框(出勤數據)

Empcode     T01         T01          T02          T03          T04
TranDate    10/09/2018  10/09/2018   10/09/2018   10/09/2018   10/09/2018
Trn Time    09.29       17.54        13.52        10.01        18.01

對於給定的 Trandate 和 Empcode,我想將 Trn Time 的第一次出現作為 In Time 並將 TrnTime 的最后一次出現作為 Out 時間。

如果該鍵只有一個記錄,則時間應該在 Out Time 中。

g=df.groupby(['Empcode','TrnDate'])

print (pd.DataFrame({'In':g.TrnTime.nth(0),'out':g.TrnTime.nth(-1)}))

上面的代碼適用於 Empcode 和 TranDate 有 2 條記錄的任何地方。

如果只有一個記錄,則不起作用。

如果該鍵只有一個記錄,則時間應該進入 Out Time

那就讓它這樣吧。 定義一個完全執行此操作的函數並將其傳遞給GroupBy.apply

def fnc(g):
    res = {'Out': g.iat[-1]}
    if len(g) > 1:
        res['In'] = g.iat[0]
    return res

dfres = df.groupby(['Empcode','TranDate'])['Trn Time'].apply(fnc).unstack()
print(dfres)
                       In    Out
Empcode TranDate                
T01     10/09/2018  09.29  17.54
T02     10/09/2018    NaN  13.52
T03     10/09/2018    NaN  10.01
T04     10/09/2018    NaN  18.01

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM