[英]Dropping rows based on date and other boolean condition
我在 Pandas 中有一個這樣格式的數據框。
(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 列刪除重復的行,例如學校 2 和 3 以及學校 5 和 6 之間的重復行。基於哪個具有最近的日期以及學校的狀態是否處於活動狀態。 因此,在 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')
謝謝您的幫助。
由於'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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.