Удалить 2 последние строки каждого дня в кадре данных - PullRequest
0 голосов
/ 10 октября 2018

У меня есть фрейм данных с несколькими индексами «дата» и «время».Я хотел бы удалять 2 последние строки каждого дня.

Например:

Date           Time               colA                 colB
01/01/2018    08:00               15                   'abc'
01/01/2018    09:00               16                   'abd'
01/01/2018    11:00               17                   'abe'
01/01/2018    14:00               18                   'abf'
03/01/2018    11:30               19                   'abg'
03/01/2018    18:00               20                   'abh'
03/01/2018    19:00               21                   'abi'
03/01/2018    19:20               22                   'abj'
04/01/2018    14:00               23                   'abk'
04/01/2018    16:00               24                   'abl'
04/01/2018    17:00               25                   'abm'
04/01/2018    18:00               26                   'abn'
04/01/2018    19:00               27                   'abo'

станет:

Date           Time               colA                 colB
01/01/2018    08:00               15                   'abc'
01/01/2018    09:00               16                   'abd'
03/01/2018    11:30               19                   'abg'
03/01/2018    18:00               20                   'abh'
04/01/2018    14:00               23                   'abk'
04/01/2018    16:00               24                   'abl'
04/01/2018    17:00               25                   'abm'

Как мне этого добиться?

Ответы [ 2 ]

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

Использование cumcount, чтобы избежать apply:

s = df.groupby(level=0).cumcount(0)
df[s>1]

                  colA   colB
Date       Time
01/01/2018 08:00    15  'abc'
           09:00    16  'abd'
03/01/2018 11:30    19  'abg'
           18:00    20  'abh'
04/01/2018 14:00    23  'abk'
           16:00    24  'abl'
           17:00    25  'abm'
0 голосов
/ 10 октября 2018

Предполагая, что фрейм данных является многоиндексным, с датой и временем в качестве индекса

df.groupby(level = 0, as_index = False).apply(lambda x: x.iloc[:-2])


                        colA colB
    Date        Time        
0   01/01/2018  08:00   15  'abc'
                09:00   16  'abd'
1   03/01/2018  11:30   19  'abg'
                18:00   20  'abh'
2   04/01/2018  14:00   23  'abk'
                16:00   24  'abl'
                17:00   25  'abm'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...