删除数据框中每天的最后2行

时间:2018-10-10 17:21:09

标签: python pandas dataframe

我有一个带有多重索引“日期”和“时间”的数据框。 我想删除每天的最后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 :(得分:3)

假设数据框是以日期和时间为索引的多索引

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'

答案 1 :(得分:1)

使用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'