получить первый и последний вхождение строки в группе Python - PullRequest
0 голосов
/ 01 октября 2018

У меня есть фрейм данных 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

Я хочу получить первый вхождение Trn Time в качестве In Time и последний вхождение TrnTime в качестве Out out для данного Trandateи Empcode.

, если для ключа есть только одна запись, время должно прийти в Out Time.

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

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

Приведенный выше код работает везде, где есть 2 записи для Empcode и TranDate.

Если есть одна запись, она не работает.

1 Ответ

0 голосов
/ 01 октября 2018

если для ключа есть только одна запись, время должно прийти в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...