获取python groupby中字符串的第一次和最后一次出现

时间:2018-10-01 07:16:37

标签: python pandas pandas-groupby

我有一个带有以下列的Python数据框(出勤数据)

HashMap

对于给定的Tateate和Empcode,我想将Trn Time的第一次出现作为In Time,将TrnTime的最后一次出现作为Out时间。

如果密钥只有一个记录,那么时间应该在Out Time中。

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

上面的代码在Empcode和TranDate有2条记录的地方都可以使用。

如果只有一条记录,则无法使用。

1 个答案:

答案 0 :(得分:1)

  

如果密钥只有一个记录,那么时间应该到了   时间

那么就这样吧。定义一个精确地做到这一点的函数并将其传递给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