我有一个带有多重索引“日期”和“时间”的数据框。 我想删除每天的最后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'
我该如何实现?
答案 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'