我在熊猫中有一个这样格式化的数据框。
(df)
School ID Num Status Date
School 1 6000 Active 2020-07-18
School 2 9-999 InActive 2020-09-05
School 3 9-999 Active 2020-03-30
School 4 8000 Active 2020-12-14
School 5 8999 InActive 2020-10-21
School 6 8999 Active 2020-03-12
....
我想基于num列删除重复的行,例如在School 2和3之间以及在5和6之间如何存在重复项,基于哪个具有最近的日期,以及School的状态是否有效。因此,对于9-999,由于学校2的行处于非活动状态,而学校3的行处于活动状态,因此该行将被删除。
但是,如果输入8999,即使School 5的日期最近,它的状态也为Inactive,因此它将被删除并保留School 6的行。
因此上述条件的结果将是
(df)
School ID Num Status Date
School 1 6000 Active 2020-07-18
School 3 9-999 Active 2020-03-30
School 4 8000 Active 2020-12-14
School 6 8999 Active 2020-03-12
....
我不确定是否需要条件语句,还是只能按状态和日期排序以删除重复项,例如
df.sort_values('Date').drop_duplicates('School ID',keep='last')
感谢您的帮助。
答案 0 :(得分:1)
自'Active' < 'InActive'
起,我们可以将drop_duplicates
与sort_values
一起使用:
df.sort_values('Status').drop_duplicates('Num').sort_index()
输出:
School ID Num Status Date
0 School 1 6000 Active 2020-07-18
2 School 3 9-999 Active 2020-03-30
3 School 4 8000 Active 2020-12-14
5 School 6 8999 Active 2020-03-12