首页 > 解决方案 > Python Dataframe删除特定值出现超过10次的行

问题描述

我有以下数据(只是一张图片,数字继续):

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': ['CA1336', 'CA1332', 'CA1472', 'CA1473', 'CA1355', 'CA1331', 'CA1666', 'CA1665', 'CA1366', 'CA1337', 'CA1489', 'CA1667'],
               'STD Departure': [10, 15, 8, 11,10, 15, 8, 14,10, 15, 8, 11], 
               'Bircher': [2, 4, 8, 4,3, 2, 3, 1,5, 5, 2, 1],
               'Carac': [2, 4, 8, 4,2, 2, 3, 4,2, 5, 2, 1]})

我只想保留最后 10 次出现的相同“航班号”和“STD 出发”,并删除最后 10 次出现之前的行。例如,在我有最后 10 行已经符合条件之前删除 LX1336(航班号)10(STD 出发)的行,因此有 LX1336(航班号)10(STD 出发)。我在 CSV 文档中有所有航班号,如果有帮助,STD 出发总是从 0 到 23。是否有针对此问题的简短代码?非常感谢您的帮助!

标签: pythonpython-3.xpandasdataframeslice

解决方案


您可以GroupBy.head为此使用:

df.groupby(['Flight Number','STD Departure']).head(10)

编辑

如果您想要最后 10 个,只需GroupBy.tail按照@jondiedoop 的建议使用:

df.groupby(['Flight Number','STD Departure']).tail(10)

推荐阅读