我有以下数据(快速浏览,数字继续):
import pandas as pd
df = pd.DataFrame({'Flight Day': ['2018-10-01', '2018-10-01','2018-10-01', '2018-10-01', '2018-10-02','2018-10-02', '2018-10-02', '2018-10-02', '2018-10-03','2018-10-03''2018-10-03','2018-10-03'],
'Flight Number': [LX1336, LX1337, LX1472, LX1473, LX1336, LX1337, LX1472, LX1473, LX1336, LX1337, LX1472, LX1473]'STD Departure': [10, 15, 8, 11,10, 15, 8, 14,10, 15, 8, 11], 'Bircher': [2, NaN, 8, 4,3, 2, 3, 1,NaN, 5, 2, 1]'Carac': [NaN, 4, 8, 4,NaN, 2, 3, 4,2, 5, 2, 1]})
我只想保留最后10次相同的“航班号”和“ STD出发”,并删除最后10次之前的行。例如,在我具有已经符合资格的最后10行之前,删除LX1336(航班号)10(STD出发)的行,因此要删除LX1336(航班号)10(STD出发)。 我将所有航班号都保存在CSV文档中,如果有帮助,STD出发点总是从0到23。 是否有简短明了的代码来解决此问题? 非常感谢您的帮助!
答案 0 :(得分:0)
您可以使用GroupBy.head
:
df.groupby(['Flight Number','STD Departure']).head(10)
如果要使用最后10个,请使用GroupBy.tail
代替@jondiedoop建议:
df.groupby(['Flight Number','STD Departure']).tail(10)